자바 JTextArea와 ItemListener와 관련된 질문드립니다.
조회수 309회
public class HobbyEx extends JFrame {
private String [] type = {"남자", "여자"};
private String [] hobby = {"운동", "음악감상", "영화", "독서", "컴퓨터게임"};
private JLabel printType = new JLabel();
private JComboBox<String> typeCombo = new JComboBox<String>(type); //성별담긴 콤보박스
private JCheckBox[] Hobby = new JCheckBox[5];
private JTextArea ta = new JTextArea("",20,40); //취미 선택 비선택 알림창 띄우는 textArea
public HobbyEx() {
setTitle("취미선택");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new FlowLayout());
c.add(typeCombo);
typeCombo.addActionListener(new ActionListener() { //성별리스트 리스너
public void actionPerformed(ActionEvent e) {
JComboBox<String> cb = (JComboBox<String>)e.getSource();
int index = cb.getSelectedIndex();
printType.setText(type[index]); //리스트에서 성별을 선택하면 라벨을 선택한 성별로 바꿔줌.
}
});
MyItemListener listener = new MyItemListener();
for(int i = 0; i <hobby.length; i++) { //체크박스 5개 생성
Hobby[i] = new JCheckBox(hobby[i]);
c.add(Hobby[i]);
Hobby[i].addItemListener(listener);
}
c.add(printType);
c.add(ta);
setSize(500,500);
setVisible(true);
}
class MyItemListener implements ItemListener{
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED) {
if(e.getItem() == hobby[0]) {
JTextField t = new JTextField("운동은 취미입니다. \n");
ta.append(t.getText());
}
else if(e.getItem() == hobby[1]) {
JTextField t = new JTextField("음악감상은 취미입니다. \n");
ta.append(t.getText());
}
else if(e.getItem() == hobby[2]) {
JTextField t = new JTextField("영화는 취미입니다. \n");
ta.append(t.getText());
}
else if(e.getItem() == hobby[3]) {
JTextField t = new JTextField("독서는 취미입니다. \n");
ta.append(t.getText());
}
else if(e.getItem() == hobby[4]) {
JTextField t = new JTextField("컴퓨터게임은 취미입니다. \n");
ta.append(t.getText());
}
}
else {
if(e.getItem() == hobby[0])
ta.append("운동은 취미가 아닙니다. \n");
else if(e.getItem() == hobby[1])
ta.append("음악감상은 취미가 아닙니다. \n");
else if(e.getItem() == hobby[2])
ta.append("영화는 취미가 아닙니다. \n");
else if(e.getItem() == hobby[3])
ta.append("독서는 취미가 아닙니다. \n");
else if(e.getItem() == hobby[4])
ta.append("컴퓨터게임은 취미가 아닙니다. \n");
}
}
}
public static void main(String[] args) {
new HobbyEx();
}
}
이 코드는 체크박스 5개가 만들어지고, 체크박스를 선택을 하면 JTextArea에 "무엇을 선택했습니다." 이런식으로 뜨게 하려고 한 작업입니다. 하지만 제가 디버깅을 했을 때, ItemListsner안에서 이루어져야 할 작업이 일어나지 않습니다. 예를들어 제가 <운동>이라는 체크박스를 체크한다면 ItemListener 내부에 if(e.getItem() == hobby[0]) 에 걸려서 "운동은 취미입니다."가 JTextArea를 통해 출력 되어야 하는데, 그냥 지나쳐 갑니다. 다른 체크 박스를 체크해도 마찬가지구요. 혹시 가정문이 잘못된건지, 아니면 JTextArea로 출력이 되는걸 잘못 만들었는지 궁금합니다
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력