下面是2個簡單的java ui應用程序,我發現如果當前的IME是google pinyin當我在Windows 7和Windows XP OS中單擊此Frame的右上關閉按鈕時,框架可以關閉,但EDT線程不會終止。Java Frame無法關閉使用某些輸入法時
谷歌拼音輸入法下載地址是http://dl.google.com/pinyin/v2/GooglePinyinInstaller.exe。
最近我發現使用百度拼音輸入法(另一種中文輸入法)時也會出現這種情況。不同的是,它僅在使用揮杆時發生,隨機(EDT線程不能終止一段時間,並在以後變得正常)。
我讀過一篇文章,指責類似於我很久以前的相同問題,作者也沒有提出解決方案。我認爲這是Google IME中的一個錯誤。
我知道大多數人認爲這個問題可能不是中文,可能無法安裝這2個IME並嘗試我的示例,但對我來說太荒謬了,這兩個東西怎麼會有關係?有沒有人有一些想法根據你的知識來解釋它?非常感謝!
// AWT
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
final Frame frame = new Frame("test");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
frame.dispose();
}
});
frame.setSize(400, 400);
frame.setVisible(true);
}
});
下面是作爲@MadProgrammer提到搖擺
// Swing
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame("swing");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setSize(400, 400);
frame.setVisible(true);
}
});
。我更改了我的代碼,使用AWT中的System.exit(0)和swing中的frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE),結果爲我無法關閉框架,當我單擊關閉按鈕時,什麼也沒有發生。
有任何數量的可能的原因JVM可能不會終止窗口關閉。例如,有可能還有其他非守護線程正在運行。您可以嘗試添加System.exit以查看是否強制它終止 – MadProgrammer
爲了更好地幫助您,請發佈[MCVE](http://stackoverflow.com/help/mcve)。 –