我已经编写了一个表单,并通过查看各种资源提出了一个可以在按下“X”时自行关闭的表单。但是,我似乎以一种相当 hack-tastic 的方式完成了它。
(我发布的代码已经去除了不相关的装饰细节,但它本质上是基于本教程的弹出通知:http: //harryjoy.me/2011/07/01/create- new-message-notification-pop-up-in-java/ )
public class Notification extends JFrame {
private JFrame uglyJFrameHack;
public Notification(String header, String message) {
super();
uglyJFrameHack = this;
JButton closeBtn = new JButton("X");
closeBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
uglyJFrameHack.dispose(); //here's where this all seems screwy.
}
});
this.add(closeBtn);
this.setVisible(true);
}
}
如果没有引用其他内容,我似乎无法在 actionPerformed 方法中使用“this”。我做了一个System.out.println(this.getClass());
,它给了我class Notification$1
。因此,我尝试将其类型转换为 Notification 对象,但 Eclipse 给我一个错误说明Cannot cast from new ActionListener(){} to Notification
。
我设置它的方式有效并且似乎没有任何问题,但这似乎也不是一个好的做法。有一个更好的方法吗?谢谢大家。