Вы могли бы хотеть переместить проверку за пределами методов get и методов set. У Вас могли быть функция или свойство под названием IsValid, который выполнит все правила проверки. t заполнил бы словарь или хеш-таблицу со всеми "Нарушенными Правилами". Этот словарь был бы представлен внешнему миру, и можно использовать его для заполнения сообщений об ошибках.
Это - подход, который проявлен в CSLA.Net.
Прослушиватель действий обычно запускается только при нажатии клавиши ввода или перемещении фокуса от редактора поля со списком. Правильный способ перехвата отдельных изменений в редакторе - зарегистрировать прослушиватель документа:
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 ...
});