Я пытаюсь сделать событие щелчка JButton изменяющим JFrame, кнопка включена. Проблема в том, что сам класс - это JFrame (расширяющий его), поэтому я не могу вызвать 'this' из внутреннего класса, который обрабатывает событие. Я нашел решение, которое работает, но я думаю, что оно может привести к другим проблемам, поэтому я пытаюсь найти другой путь. Код выглядит следующим образом:
public class ClassX extends JFrame {
...
this.setTitle("Title1"); //works fine
jButton1 = new JButton();
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
//this.setTitle("Title1"); //calling 'this' won't work inside an inner class
//Ugly Solution
JButton btn = (JButton) e.getSource();
JFrame frme = (JFrame) btn.getParent().getParent().getParent().getParent();
frme.setTitle("Title2");
}
});
...
}
Я пытаюсь избежать нескольких вызовов getParent, но не могу найти другое решение. Есть идеи? Возможно, есть способ передать «этот» или любой другой параметр методу прослушивателя действий?
Спасибо.