Самый простой случай - это когда ваш экземпляр JPanel и экземпляр JButton «видят» друг друга в вашем коде, т. Е .:
JButton button = new JButton ("Click me");
JPanel panel = new JPanel ();
...
container.add (button);
container.add (panel);
В этом случае вы можете добавить прослушиватель событий на панель (или на кнопку) и изменить второй компонент из обработчика событий:
panel.addMouseListener (new MouseAdapter () {
public void mouseClicked (MouseEvent e) {
button.setText ("new text");
}
});
Единственное, что вы должны здесь учитывать, это то, что вы должны использовать модификатор final
рядом с объявлением button
(из-за того, что у java нет реальных замыканий):
final JButton button = new JButton ("Click me");
JPanel panel = new JPanel ();
panel.addMouseListener (new MouseAdapter () {
....
});
Более сложный случай, когда ваши компоненты не знают друг о друге или когда состояние системы изменяется, и состояние компонентов (например, имя кнопки или что-то более серьезное) также должно быть изменено. В этом случае вы должны рассмотреть возможность использования шаблона MVC. Вот очень хороший урок от JavaWorld: MVC встречает Swing .