Шаблон наблюдателя для JTextField?

Предположим, у меня есть класс:

class Boy
{
      int age = 25;
}

У меня есть JTextField, возраст, который обновляет поле экземпляра «возраст» мальчика. В качестве альтернативы, если возраст мальчика изменен другим способом (например, setAge() ), мне нужно иметь возможность отразить это изменение в JTextField.

Использование шаблона наблюдателя — один из способов. В этом случае я вынужден создать новый класс JTextFieldThatObserves (который наследуется от JTextField и реализует Observer)

Является ли JTextField по умолчанию неспособным делать то, что мне нужно?


person Community    schedule 16.11.2010    source источник
comment
Вас не принуждают создавать JTextFieldThatObserves. Вы можете просто создать наблюдателя, который вызывает setText() на вашем обычном JTextField. Предпочитайте делегирование наследованию.   -  person Todd    schedule 17.11.2010


Ответы (2)


Java не поставляется с автоматической инфраструктурой привязки для компонентов Swing и полей объекта. Это один из его главных недостатков!

Боюсь, единственный способ сделать это — использовать шаблон наблюдателя как для виджета, так и для объекта и наблюдение за бесконечными циклами.

Одна вещь, полезная в этих случаях, — это PropertyEditor, поскольку она избавляет вас от создания огромного количества различных классов слушателей/событий.

person oxbow_lakes    schedule 16.11.2010

Если вы собираетесь заниматься подобными вещами более чем тривиально, я настоятельно рекомендую вам потратить немного времени на изучение одной из сред связывания, доступных для Java. Лично я использую Better Beans Bindings.

person Kevin Day    schedule 17.11.2010