Java-Swing: измените getSource () в ActionListener - PullRequest
0 голосов
/ 20 апреля 2010

У меня есть класс, который содержит JButton. Это нельзя изменить.

Проблема заключается в следующем: actionListener вызывает getSource () и получает JButton, а не класс контейнера.

Могу ли я изменить то, что получает getSource, до добавления actionListener? ИЛИ может ли JButtons иметь ссылку на переменную своего контейнера?

Я не могу заставить класс расширить JButton. Это вызывало ошибки при рисовании ... история моей недели.

Ответы [ 3 ]

1 голос
/ 20 апреля 2010

Гораздо лучше добавить контекст к слушателю, чем использовать getSource.

1 голос
/ 20 апреля 2010

Для присоединения произвольных данных к любому JComponent, используйте [putClientProperty (ключ объекта, значение объекта)] [1], затем в слушателе вызовите getClientProperty (ключ объекта) , чтобы получить значение.

[1]: http://java.sun.com/javase/6/docs/api/javax/swing/JComponent.html#putClientProperty(java.lang.Object, java.lang.Object)

1 голос
/ 20 апреля 2010

См. JButton.getParent()

...