JComboBox에 ItemListener를 추가했습니다. ItemListener는 마우스 클릭 또는 스페이스 바를 사용하여 내가 선택한 선택을 감지 할 수 있습니다. 그러나 Enter 키를 인식하지 못합니다. 즉, 화살표 키를 사용하여 ComboBox의 항목을 스크롤 한 다음 Enter 키를 누르면 itemStateChanged 메서드가 호출되지 않습니다. 아이디어가 있습니까? MouseEvent
변경 사항의 청취스윙에서 Enter 키가 콤보 박스에서 요소를 선택하는 데 작동하지 않습니다.
0
A
답변
0
누르면
ENTER key
의 청취SELECTED/DESELECTED
을 발사,이
ItemListener
있다가ActionListener
키 이벤트의 나머지는 JComboBox에의 JList의
에서 결정하는 것이 가능하다
예를 들면
import java.awt.Component;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.plaf.basic.BasicComboBoxRenderer;
public class ComboBoxHoverOver {
private JComboBox combo = new JComboBox();
public ComboBoxHoverOver() {
combo.setPrototypeDisplayValue("XXXXXXXXXXXXXXXXXXXXXX");
combo.setRenderer(new ComboToolTipRenderer(combo));
combo.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
System.out.println(combo.getSelectedItem().toString());
}
});
combo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(combo.getSelectedItem().toString());
}
});
combo.addItem("");
combo.addItem("Long text 4");
combo.addItem("Long text 3");
combo.addItem("Long text 2");
combo.addItem("Long text 1");
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(combo);
f.pack();
f.setVisible(true);
}
private class ComboToolTipRenderer extends BasicComboBoxRenderer {
private static final long serialVersionUID = 1L;
private JComboBox combo;
private JList comboList;
ComboToolTipRenderer(JComboBox combo) {
this.combo = combo;
}
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (comboList == null) {
comboList = list;
KeyAdapter listener = new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_DOWN || e.getKeyCode() == KeyEvent.VK_UP) {
int x = 5;
int y = comboList.indexToLocation(comboList.getSelectedIndex()).y;
System.out.println(comboList.getSelectedIndex());
}
}
};
combo.addKeyListener(listener);
combo.getEditor().getEditorComponent().addKeyListener(listener);
}
if (isSelected) {
System.out.println(value.toString());
}
return this;
}
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
ComboBoxHoverOver comboBoxHoverOver = new ComboBoxHoverOver();
}
});
}
}
+0
-1 keyListener 및 random (읽기 : 질문과 관련이없는) 코드 용입니다. 기억해야 할 점은 답안의 코드는 SSCCE뿐 아니라 질문의 코드가되어야합니다 :-) – kleopatra
관련 문제
- 1. 콤보 박스에서 봄 MVC로 옵션을 선택하는 방법
- 2. Afterrender는 EXTJS의 눈금에서 사용될 때 콤보 박스에서 작동하지 않습니다.
- 3. 스윙에서 콤보 박스 바인딩하기
- 4. Enter 키가 검색에 유용합니까?
- 5. 콤보 박스에서 검색
- 6. IE8 - Enter 키가 검색 필드를 제출하지 않습니다.
- 7. 바로 가기 키가 양식에서 제대로 작동하지 않습니다.
- 8. SlickGrid에서 자동 완성 콤보 상자 위아래 키가 작동하지 않습니다.
- 9. VK_PRIOR 키가 작동하지 않습니다.
- 10. 왜 마라톤이 콤보 박스에서 제대로 선택되지 않습니까?
- 11. PowerPoint 콤보 박스에서 항목을 올바르게 나열하는 데 문제가 있음
- 12. css가 해당 요소를 선택하는 데 대해 설명했습니다
- 13. 자바 스윙에서 텍스트 정렬이 작동하지 않습니다. jTextPane
- 14. 이클립스 디버깅 키가 작동하지 않습니다.
- 15. gvim 탭 키가 작동하지 않습니다.
- 16. 화살표 키가 sqlplus에서 작동하지 않습니다
- 17. Vim 쉼표 키가 작동하지 않습니다.
- 18. Jquery 라이브 키가 작동하지 않습니다.
- 19. C# 가속기 키가 작동하지 않습니다.
- 20. vim 매핑 키가 작동하지 않습니다.
- 21. 자바 스윙에서 구성 요소를 스윙
- 22. 키보드 tlf 텍스트 입력의 경우 ENTER 키가 작동하지 않습니까?
- 23. Field.length가 하나의 체크 박스에서 작동하지 않습니다.
- 24. 체크 박스에서 onclick이 IE에서 작동하지 않습니다
- 25. H2에서보기에서 선택하는 것이 작동하지 않습니다.
- 26. 안드로이드지도 api 키가 다른 프로젝트에서 작동하지 않습니다
- 27. 자바 스윙에서 콤보 박스 값 가져 오기
- 28. Silverlight 콤보 박스에서 바인딩 된 항목을 표시하지 않습니다.
- 29. 구성 요소에서 화살표 키가 작동하지 않습니다.
- 30. 스윙에서 모노 스페이스 폰트를 선택하는 올바른 방법
시도한 코드를 공유 할 수 있습니까? 그건 디버깅하는 데 도움이됩니다. –