Как я могу знать, когда текст доступного для редактирования JComboBox был изменен?

Вы могли бы хотеть переместить проверку за пределами методов get и методов set. У Вас могли быть функция или свойство под названием IsValid, который выполнит все правила проверки. t заполнил бы словарь или хеш-таблицу со всеми "Нарушенными Правилами". Этот словарь был бы представлен внешнему миру, и можно использовать его для заполнения сообщений об ошибках.

Это - подход, который проявлен в CSLA.Net.

18
задан skaffman 11 August 2009 в 13:34
поделиться

1 ответ

Прослушиватель действий обычно запускается только при нажатии клавиши ввода или перемещении фокуса от редактора поля со списком. Правильный способ перехвата отдельных изменений в редакторе - зарегистрировать прослушиватель документа:

final JTextComponent tc = (JTextComponent) combo.getEditor().getEditorComponent();
tc.getDocument().addDocumentListener(this);

Интерфейс DocumentListener имеет методы, которые вызываются всякий раз, когда документ, поддерживающий редактор, изменяется (insertUpdate, removeUpdate, changeUpdate).

Вы также можете использовать анонимный класс для более детального контроля того, откуда происходят события:

final JTextComponent tcA = (JTextComponent) comboA.getEditor().getEditorComponent();
tcA.getDocument().addDocumentListener(new DocumentListener() { 
  ... code that uses comboA ...
});

final JTextComponent tcB = (JTextComponent) comboB.getEditor().getEditorComponent();
tcB.getDocument().addDocumentListener(new DocumentListener() { 
  ... code that uses comboB ...
});
31
ответ дан 30 November 2019 в 08:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: