자바 콤보박스(JComboBox) 편집 이벤트 처리 예
Java 에서 제공하는 JComboBox 에서 편집모드로 편집 후 엔터키를 치면 ActionEvent 가 2번 전달된다.
전달된 ActionEvent 객체를 확인해보면 아래와 같은 서로 다른 2개의 이벤트가 전달되는 것을 확인할 수 있다
- comboBoxChanged
- comboBoxEdited
다음과 같이 콤보박스의 액션 이벤트 처리에 조건을 적용하여 구분하면 필요한 이벤트에만 반응할 수 있다
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
if(evt.getActionCommand().equals("comboBoxEdited"))
{
System.out.println(evt.getActionCommand());
}
else if(evt.getActionCommand().equals("comboBoxChanged"))
{
System.out.println(evt.getActionCommand());
}
}
JComboBox에서 아이템을 선택하는 경우, 다른 아이템은 선택해제되면서 동시에 어떤 아이템은 선택되기 때문에 2번의 이벤트가 발생한다
다음과 같은 방법으로 선택되는 경우에만 이벤트를 처리할 수 있다
private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) {
if(evt.getStateChange()==1) { //해제되는 경우에는 2
JComboBox combo = (JComboBox)evt.getSource();
System.out.println(combo.getSelectedItem().toString());
}
}