에서 선택을 할 때마다 이벤트를 시작하려고합니다 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();
답변
최근 에이 동일한 솔루션을 찾고 마지막으로 선택한 항목과 새로 선택한 항목에 특정 변수를 할당하지 않고 간단한 솔루션을 찾을 수있었습니다. 그리고이 질문은 매우 도움이되었지만 필요한 솔루션을 제공하지 못했습니다. 이것은 내 문제를 해결했으며, 그것이 당신과 다른 사람들을 해결하기를 바랍니다. 감사.