JComboBox 선택 변경 수신기?
난 어떤 이벤트를 열려고 노력중이야JComboBox
.
내가 안고 있는 문제는 명백하지 않다는 것이다.addSelectionListener()
방법.
사용하려고 했습니다.actionPerformed()
하지만 절대 발화하지 않습니다.
에 대한 모델을 재정의하는 것 이외JComboBox
아이디어가 없어요.
에서의 선택 변경을 통지받으려면 어떻게 해야 합니까?JComboBox
?**
편집: 사과드립니다.알고 보니 제가 잘못된 행동 서브클래스를 사용하고 있었습니다.JComboBox
하지만 당신의 답변이 좋기 때문에 질문은 남겨두겠습니다.
다음과 같이 ActionListeners에 응답해야 합니다.
combo.addActionListener (new ActionListener () {
public void actionPerformed(ActionEvent e) {
doSomething();
}
});
@존 칼스비크는 올바르게 지적하고 있다.addItemListener()
잘 될 거예요.2개 받을 수 있습니다.ItemEvents
단, 하나는 이전에 선택한 아이템의 선택을 해제하기 위한 것이고, 다른 하나는 새로운 아이템의 선택을 위한 것입니다.두 가지 이벤트 유형을 모두 사용하지 마십시오.
코드 예시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());
제가 한번 해보겠습니다.itemStateChanged()
Jodonnell의 솔루션이 실패했을 경우의 인터페이스 메서드.
다음은 항목 선택 변경을 위해 수신기를 추가하는 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();
저는 최근에 이 솔루션을 찾고 있었는데, 마지막 선택한 아이템과 새로 선택한 아이템에 특정 변수를 지정하지 않고 간단한 솔루션을 찾을 수 있었습니다.그리고 이 질문은 매우 도움이 되었지만 제가 필요로 하는 해결책을 제시하지 못했습니다.이것으로 내 문제가 해결되었으니 너와 다른 사람들이 해결되었으면 좋겠어.고마워요.
jdk > = 8을 사용하여 이 작업을 수행할 수 있습니다.
getComboBox().addItemListener(this::comboBoxitemStateChanged);
그렇게
public void comboBoxitemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
YourObject selectedItem = (YourObject) e.getItem();
//TODO your actitons
}
}
나는 이것을 사용한다.
cb = new JComboBox<String>();
cb.setBounds(10, 33, 46, 22);
panelConfig.add(cb);
for(int i = 0; i < 10; ++i)
{
cb.addItem(Integer.toString(i));
}
cb.addItemListener(new ItemListener()
{
@Override
public void itemStateChanged(ItemEvent e)
{
if(e.getID() == temEvent.ITEM_STATE_CHANGED)
{
if(e.getStateChange() == ItemEvent.SELECTED)
{
JComboBox<String> cb = (JComboBox<String>) e.getSource();
String newSelection = (String) cb.getSelectedItem();
System.out.println("newSelection: " + newSelection);
}
}
}
});
언급URL : https://stackoverflow.com/questions/58939/jcombobox-selection-change-listener
'source' 카테고리의 다른 글
vuejs 애플리케이션에 오픈레이어 통합 (0) | 2022.08.13 |
---|---|
메모리가 부족하여 Out Of Memory Error를 발생시킬 수 없는 경우 어떻게 됩니까? (0) | 2022.08.13 |
처음에 슬라이드 컨테이너를 왼쪽 여백에서 10% 떨어져 있고 끝에 도달하면 오른쪽 여백에서 10% 떨어져 있도록 설정하려면 어떻게 해야 합니까?(vue-swiper) (0) | 2022.08.13 |
Visual Studio 디버거에서 동적으로 할당된 어레이를 표시하는 방법 (0) | 2022.08.12 |
Retrofit 2를 사용한 로깅 (0) | 2022.08.12 |