import java.awt.FlowLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
class Buttons extends JFrame {
private int price;
public int menuprice;
private int count;
public Buttons() {
super("버튼 연습하기");
JPanel west = new JPanel();
west.setLayout(new BoxLayout(west, BoxLayout.Y_AXIS));
JRadioButton bulgogi = new JRadioButton("불고기버거 : 2000원");
JRadioButton chicken = new JRadioButton("치킨 버거 : 3000원");
JRadioButton shirimp = new JRadioButton("새우 버거 : 2500원");
JPanel east = new JPanel();
east.setLayout(new BoxLayout(east, BoxLayout.Y_AXIS));
JCheckBox pickle = new JCheckBox("피클 추가 300원 ");
JCheckBox cheese = new JCheckBox("치즈 추가 1000원 ");
JCheckBox drink = new JCheckBox("음료 추가 500원 ");
JPanel south = new JPanel(new FlowLayout());
JLabel sum = new JLabel("총 갯수 0개 ");
JLabel totalprice = new JLabel("결제 금액 0원");
ItemListener item = new ItemListener() {
public void itemStateChanged(ItemEvent e) {
System.out.println("이벤트 발생");
int state = e.getStateChange();
Object source = e.getSource();
if (source == bulgogi) {
menuprice = 2000;
} else if (source == chicken) {
menuprice = 3000;
} else if (source == shirimp) {
menuprice = 2500;
} else if (source == pickle) {
menuprice = 300;
} else if (source == cheese) {
menuprice = 1000;
} else if (source == drink) {
menuprice = 500;
}
if (state == ItemEvent.SELECTED) {
count++;
price += menuprice;
} else if (state == ItemEvent.DESELECTED) {
count--;
price -= menuprice;
}
sum.setText("총 갯수 : " + String.valueOf(count) + "개");
totalprice.setText("결제할 금액 " + String.valueOf(price) + "원");
}
};
bulgogi.addItemListener(item);
shirimp.addItemListener(item);
chicken.addItemListener(item);
pickle.addItemListener(item);
cheese.addItemListener(item);
drink.addItemListener(item);
ButtonGroup btnGroup = new ButtonGroup();
btnGroup.add(bulgogi);
btnGroup.add(shirimp);
btnGroup.add(chicken);
west.add(bulgogi);
west.add(chicken);
west.add(shirimp);
east.add(pickle);
east.add(cheese);
east.add(drink);
south.add(sum);
south.add(totalprice);
add(west, "West");
add(east, "East");
add(south, "South");
setSize(350, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
public class ButtonTest {
public static void main(String[] args) {
new Buttons().setVisible(true);
}
}
1. 처음에 하단의 레이블 값을 바꾸는 것만 ItemListener를 사용하고
각각 메뉴의 값을 설정하는 것은 ActionListener를 사용했는데
자꾸 다음 버튼을 눌렀을때 값이 변경이 되어서 각 메뉴 가격도 ItemListener에 넣어주었더니 내가 원한 대로 되었다
2. 왜일까 ㅠㅠ?
'JAVA' 카테고리의 다른 글
JOptionPane , showMessageDialog , showInputDialog, show confirmDialog (0) | 2022.01.04 |
---|---|
ActionEvent / ItemEvent / MouseEvent (0) | 2022.01.04 |
JFrame의 레이아웃 - FlowLayout , BoxLayout, GridLayout (0) | 2022.01.03 |
JTextField와 JButton으로 간단한 로그인 창 구현하기 (0) | 2022.01.03 |
JButton으로 프레임 배경 색 바꾸기 (0) | 2022.01.03 |