键入时如何避免在 JComboBox 中触发 itemStateChanged 事件?
How to avoid firing itemStateChanged event in JComboBox while typing?
我有一个 JComboBox,它是可编辑的,并且启用了自动更正,如下所示。
comboForward = new JComboBox();
comboForward.setEditable(true);
AutoCompletion ac = new AutoCompletion(this.comboForward);
comboForward.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
new Thread() {
@Override
public void run() {
//code to run after event fires
}
}.start();
}
}
});
当用户在 comboBox
中输入时,如何避免触发此事件。或者至少有一种方法可以检测用户何时完成输入。 ?感谢您的帮助。
答案在这里,仅向组合框编辑器组件添加自动完成功能即可解决问题。但在这种情况下,您必须提供自动完成列表作为 String ArrayList
.
ComboBoxEditor editor = comboForward.getEditor();
JTextField textField = (JTextField) editor.getEditorComponent();
ArrayList<String> autoCompleteList = new ArrayList<String>();
for (Object item : comboForward.getItemList()) {
autoCompleteList.add(item.toString());
}
AutoCompletion autoCompletion = new AutoCompletion(textField, autoCompleteList);
我有一个 JComboBox,它是可编辑的,并且启用了自动更正,如下所示。
comboForward = new JComboBox();
comboForward.setEditable(true);
AutoCompletion ac = new AutoCompletion(this.comboForward);
comboForward.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
new Thread() {
@Override
public void run() {
//code to run after event fires
}
}.start();
}
}
});
当用户在 comboBox
中输入时,如何避免触发此事件。或者至少有一种方法可以检测用户何时完成输入。 ?感谢您的帮助。
答案在这里,仅向组合框编辑器组件添加自动完成功能即可解决问题。但在这种情况下,您必须提供自动完成列表作为 String ArrayList
.
ComboBoxEditor editor = comboForward.getEditor();
JTextField textField = (JTextField) editor.getEditorComponent();
ArrayList<String> autoCompleteList = new ArrayList<String>();
for (Object item : comboForward.getItemList()) {
autoCompleteList.add(item.toString());
}
AutoCompletion autoCompletion = new AutoCompletion(textField, autoCompleteList);