Самый простой способ - это, конечно, вспомнить ссылку на JFrame1
при построении JPanel1
:
JPanel1 p1 = new JPanel1(this);
и запомнить и использовать это в JPanel1:
public JPanel1(JFrame1 f1) {
this.f1 = f1;
}
...
public void actionPerformend(...) {
f1.getPanel2().getButtonB().setText("A is pressed");
}
Но это плохо .
Вместо этого подумайте, что на самом деле означает нажатие кнопки A (например, игра в паузу ).Затем создайте интерфейс PauzeGameEventListener
, реализованный JPanel2 (например, шахматная доска ), и заставьте JPanel1 (например, панель управления игрой ) запустить PauzeGameEvent
для всех слушателей.Таким образом, когда ваш JPanel3 (например, панель с оценками ) или материал, не относящийся к графическому интерфейсу (например, AI player ), также должен знать об этом, вы не засоряетеКод JPanel1.