java如何触发事件?
我有以下java代码片段:
public static void main(String[] args) {
String filename = args[0];
JFrame f = new JFrame("Load Image Sample");
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.add(new LoadImageApp(filename));
f.pack();
f.setVisible(true);
}
其中定义了WindowClosing
事件。如何从代码中触发/执行/启动此事件,从而导致代码退出
附加问题:我在代码中看到的构造是什么:
new WindowAdapter(){...}
即正常括号后接卷曲括号
# 1 楼答案
关于这一主题的一些一般想法,见Closing an Application
ExitAction
显示了将事件分派到帧的一种方法。该操作旨在与JMenuItem或JButton一起使用,以使用户能够通过单击“X”以外的其他方式关闭框架# 2 楼答案
看看这些链接。希望能有帮助
http://docs.oracle.com/javase/tutorial/uiswing/events/propertychangelistener.html
http://weblogs.java.net/blog/joshy/archive/2006/02/all_hail_the_pr.html
此外,在这种特定情况下,您实际上不需要触发事件,因为它所做的只是调用
System.exit(0)
。手动触发代码内事件的唯一原因是模拟某人单击“X”按钮关闭窗口(而不是通过其他方式关闭程序)# 3 楼答案
嗯,模拟这个事件真的没有意义。为什么?因为当事件被触发时,它意味着应用程序中发生了一些事情,这是“Java”告诉您的方式:“嘿,发生了什么事情!这是事件,您可以适当地处理它。”。在您的情况下,可能是用户按下X按钮,或者操作系统关闭。在这里,您真正想要做的是关闭应用程序,而不是触发事件。考虑这一点:
这样,您就可以在任何地方调用shutDown()
关于括号,它被称为匿名类。它和其他类一样,只是没有名字。由于JFrame需要WindowListener作为其addWindowListener函数中的参数,因此需要传递它。问题是,在代码的其他任何地方都不需要WindowAdapter,因此不需要保留对它的命名引用