在java swing应用程序中,以下操作有什么区别?我什么时候更愿意使用另一个?
我已经在互联网上看到了这两个不同的例子:
// Have the window exit on close
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- 或 -
// Set up a window listener to exit on close
mainFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent) {
System.exit(0);
}
});
第二种方法似乎是更多的代码,所以我想知道为什么我看到它如此广泛使用。这种方法比第一种方法有任何优势吗?
答案 0 :(得分:2)
实际上它们都是相同的,这个代码来自JFrame:
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
switch(defaultCloseOperation) {
case HIDE_ON_CLOSE:
setVisible(false);
break;
case DISPOSE_ON_CLOSE:
dispose();
break;
case DO_NOTHING_ON_CLOSE:
default:
break;
case EXIT_ON_CLOSE:
// This needs to match the checkExit call in
// setDefaultCloseOperation
System.exit(0);
break;
}
}
}
但是,调用setDefaultCloseOperation是首选,因为它使用当前现有的JFrame代码(re-usablity)。
答案 1 :(得分:1)
如果您只想要标准关闭,我会使用第一个选项。就像@Berger所说,如果选择第二种方法,可以添加其他功能。