我有一个可编辑的JComboBox
。我只需要在以下情况下触发事件
- 用户在输入时按 Enter(这可以通过添加按键事件监听器来实现)或
- 用户从列表中选择项目
在下面的代码中,当用户在编辑器中键入时也会触发事件
,如何避免用户键入时触发事件?
comboForward.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
new Thread() {
@Override
public void run() {
// code after the event.
}
}.start();
}
}
});
最佳答案
我觉得这个适合你。尝试一下。
JFrame frame = new JFrame("Welcome!!");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JComboBox cmb = new JComboBox();
cmb.setEditable(true);
cmb.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent event) {
if (event.getKeyChar() == KeyEvent.VK_ENTER) {
if (((JTextComponent) ((JComboBox) ((Component) event
.getSource()).getParent()).getEditor()
.getEditorComponent()).getText().isEmpty())
System.out.println("please dont make me blank");
}
}
});
frame.add(cmb);
frame.setLocationRelativeTo(null);
frame.setSize(300, 50);
frame.setVisible(true);
引用这里:https://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html
关于java - 如何仅在按 Enter 键或更改 JcomboBox 中的所选项目后才触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33891471/