I continue to search, and it seems that everyone uses only JComboBox#getSelectedItem . But my combo box is editable , and the user can enter something . The getSelectedItem method returns one of the actual elements in the combo box, not the string entered in the field.

If my field contains “Bar” and “Subject” and the user enters “Foo”, I want to get “Foo”!
Why getSelectedItem does not work
It was pointed out that getSelectedItem also returns the entered string. However, it was not noted that this only works after the user stops editing the field. I attached these event listeners:
Component[] comps = input.getComponents(); //Third is the text field component comps[2].addKeyListener(new KeyListener() { public void keyTyped(KeyEvent e) { doSomething(); } }); //Also fire event after user leaves the field input.addActionListener (new ActionListener () { @Override public void actionPerformed(ActionEvent e) { doSomething(); } });
And these were the results:
KeyEvent: JComboBox.getEditor().getItem() = 6 JComboBox.getSelectedItem() = null KeyEvent: JComboBox.getEditor().getItem() = 66 JComboBox.getSelectedItem() = null KeyEvent: JComboBox.getEditor().getItem() = 666 JComboBox.getSelectedItem() = null ActionEvent: JComboBox.getEditor().getItem() = 6666 JComboBox.getSelectedItem() = 6666
As you can see, the action event listener could capture the value, but the key event could not.
java jcombobox
Tomáš zato
source share