【发布时间】:2011-06-11 19:25:33
【问题描述】:
我正在尝试使 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 调用,但找不到其他解决方案。有任何想法吗?有没有办法将“this”或任何其他参数传递给动作监听器方法?
谢谢。
【问题讨论】:
标签: java swing inner-classes