java - 如何仅在按 Enter 键或更改 JcomboBox 中的所选项目后才触发事件

标签 java jcombobox

我有一个可编辑的JComboBox。我只需要在以下情况下触发事件

  1. 用户在输入时按 Enter(这可以通过添加按键事件监听器来实现)或
  2. 用户从列表中选择项目

在下面的代码中,当用户在编辑器中键入时也会触发事件,如何避免用户键入时触发事件?

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/

相关文章:

java - 禁用后仍然可以从 JComboBox 中选择

java - 如何修复此 java.util.Scanner.next,引发 java.util.NoSuchElementException

java - setApplicationDestinationPrefixes 的用途是什么?

java - 如何通过 if else 语句更改 Jbutton 图像?

java - 在这种情况下扩展 List<E> 有用吗?

java - 读取文本文件在 IDE 中有效,但在 .jar 中无效

java - 删除字符串中的单词 (RemoveString)

Java Swing - JSlider 和 JCombobox 导致运行时错误

java - 有没有办法让 JComboBox 像 HTML Select 一样工作?

java - 将事件监听器放在不同的类中会更好吗?