У меня есть редактируемый JComboBox с одним слушателем на нем.Редактируемый JCombobox избегает нескольких DocumentEvents, когда выбор изменяется из всплывающего окна
Это DocumentListener, что выполнить некоторый код, когда вставка пользователя или удалить какой-нибудь текст внутри выпадающий список TextField:
((JTextComponent)combobox.getEditor().getEditorComponent()).getDocument().addDocumentListener(..)
Моя проблема заключается в том, что, когда пользователь выбирает элемент из всплывающего окна и содержание Изменения текстового поля combobox содержат два события, выполняемых в documentListener, один - removeUpdate(), соответствующий удалению предыдущего содержимого, а другой - insertUpdate(), соответствующий вставке нового значения. Я хочу, чтобы выполнялось только одно исполнение моего кода, а не два. Как я могу избежать того, что код выполняется два раза, когда пользователь выбирает запись из всплывающего окна?
Я пробовал различную комбинацию из разных слушателей, но на данный момент безрезультатно.
В конце концов, я хочу, чтобы мой код выполнялся только один раз, когда: - Пользователь меняет текст в текстовое поле combobox. - Пользователь выбирает элемент из всплывающего окна combobox
Заранее спасибо.
[EDIT 1] В соответствии с поручением я обновил добавление SSCCE
myCombobox = new javax.swing.JComboBox<String>();
myCombobox.setEditable(true);
((JTextComponent)myCombobox.getEditor().getEditorComponent()).getDocument().addDocumentListener(
new DocumentListener(){
@Override
public void insertUpdate(DocumentEvent e) {
System.out.println("insert performed");
}
@Override
public void removeUpdate(DocumentEvent e) {
System.out.println("remove performed");
}
@Override
public void changedUpdate(DocumentEvent e) {
System.out.println("change performed");
}
});
myCombobox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent event) {
if (event.getStateChange() == ItemEvent.SELECTED) {
System.out.println("Action performed");
}
}
});
Обратите внимание, что в этом случае у меня есть ItemEvent вместо ActionEvent, потому что я продолжаю изменять свой код поиска решения в любой в этом случае на поведение не должно влиять.
'В соответствии с просьбой я обновил добавление SSCCE' - этот код не является SSCCE. Мы не можем скомпилировать или выполнить код. – camickr