[java] JComboBox 선택 변경 리스너?

에서 선택을 할 때마다 이벤트를 시작하려고합니다 JComboBox.

내가 겪고있는 문제는 확실한 addSelectionListener()방법 이 없다는 것 입니다.

사용하려고 actionPerformed()했지만 절대로 실행되지 않습니다.

에 대한 모델을 재정의 JComboBox하지 않고 아이디어가 없습니다.

선택 변경에 대한 알림을 받으려면 어떻게해야 JComboBox합니까? **

편집 : 사과해야합니다. 내가 잘못 작동하는 하위 클래스를 사용하고있는 것으로 나타 JComboBox났지만 대답이 좋기 때문에 질문을 남겨 두겠습니다.



답변

다음 과 같이 ActionListeners에 응답해야 합니다.

combo.addActionListener (new ActionListener () {
    public void actionPerformed(ActionEvent e) {
        doSomething();
    }
});

@ John Calsbeek도 올바르게 addItemListener()작동 한다고 지적합니다 . ItemEvents그러나 이전에 선택한 항목의 선택 취소와 새 항목의 선택을 위해 2를 얻을 수 있습니다 . 두 가지 이벤트 유형을 모두 사용하지 마십시오!


답변

ItemListener구현의 코드 예

class ItemChangeListener implements ItemListener{
    @Override
    public void itemStateChanged(ItemEvent event) {
       if (event.getStateChange() == ItemEvent.SELECTED) {
          Object item = event.getItem();
          // do something with object
       }
    }
}

이제 선택한 항목 만 가져옵니다.

그런 다음 JComboBox에 리스너를 추가하십시오.

addItemListener(new ItemChangeListener());


답변

jodonnell의 솔루션이 실패하면 인터페이스 의 itemStateChanged()방법을 시도 할 것 ItemListener입니다.


답변

다음은 항목 선택 변경을위한 리스너를 추가하는 ComboBox를 작성하는 것입니다.

JComboBox comboBox = new JComboBox();

comboBox.setBounds(84, 45, 150, 20);
contentPane.add(comboBox);

JComboBox comboBox_1 = new JComboBox();
comboBox_1.setBounds(84, 97, 150, 20);
contentPane.add(comboBox_1);
comboBox.addItemListener(new ItemListener() {
    public void itemStateChanged(ItemEvent arg0) {
        //Do Something
    }
});


답변

당신은 이것을 시도 할 수 있습니다

 int selectedIndex = myComboBox.getSelectedIndex();

-또는-

Object selectedObject = myComboBox.getSelectedItem();

-또는-

String selectedValue = myComboBox.getSelectedValue().toString();


답변

최근 에이 동일한 솔루션을 찾고 마지막으로 선택한 항목과 새로 선택한 항목에 특정 변수를 할당하지 않고 간단한 솔루션을 찾을 수있었습니다. 그리고이 질문은 매우 도움이되었지만 필요한 솔루션을 제공하지 못했습니다. 이것은 내 문제를 해결했으며, 그것이 당신과 다른 사람들을 해결하기를 바랍니다. 감사.

이전 또는 마지막 항목은 어떻게 받습니까?


답변