我有,我想從一個JButton也進一步關閉比窗口上的標準的X按鈕windowbuilderpro開發的一類,所以這裏的類的實例:從一個JButton過程中關閉的JFrame仍然活着,
public class MainWindow {
public JFrame frame;
public MainWindow() {
initialize();
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public void show() {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
//Show the main Frame
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
當我從X按鈕關閉窗口時,窗口正確關閉,進程終止。
當我關閉,而不是從一個JButton有這個監聽器:
mntmExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//Close the application main form
frame.setVisible(false);
frame.dispose();
}
});
框架窗口接近正常,但該過程仍然活着,爲什麼?
正如你可以看到有開始和持續終止AWT-關閉線程,我怎麼能做到這一點還關閉應用程序的X按鈕相同的行爲呢?
注:
System.exit(0);是不適合的,因爲它也終止了應用程序,如果有另一個後臺運行線程,我不想這樣做。 MainWindow類應該關閉並釋放它的資源,這與使用關閉MainWindow實例的X按鈕關閉應用程序的行爲相同,但如果有後臺線程正在運行,它不會殺死它們,而是等待它們完成工作。
環境:
- JDK 7
- 的Eclipse 3.7.1
是我應該befo說回覆: - 爲了更快地獲得更好的幫助,請發佈[SSCCE](http://pscode.org/sscce.html)。在SSCCE中,一個鬆散的計時器會很明顯。而且由於我提到的是代碼,你可以選擇縮進代碼的邏輯樣式之一,並堅持以後的帖子?我花了很長時間重新格式化並理解了代碼,而不是將代碼轉換爲工作代碼。 –