我有一個只有靜態方法的類,其中一個使用 JFrame 物件作為組件打開 JOptionPane 錯誤訊息對話框。
這是類 方法:
public class miscMethods
{
static JFrame errorWindow = null;
public static void ErrorPopup(String message)
{
errorWindow = new JFrame();
errorWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
errorWindow.setAlwaysOnTop(true);
JOptionPane.showMessageDialog(errorWindow, message, "Error", JOptionPane.ERROR_MESSAGE);
errorWindow = null;
}
}
ErrorPopup 方法在 JavaFX 控制器和其他地方使用,呼叫如下:
import static code.miscMethods.ErrorPopup;
...
ErrorPopup("This is the error message");
問題是當我在彈出視窗出現后從視窗的 ? 關閉程式時,應用程式的行程不會關閉,因為 JFrame 已創建并顯示。我知道 JFrame 是罪魁禍首,所以我添加了errorWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
但它似乎沒有做任何事情,因為程式沒有關閉。
在這個問題中:JFrame 和為什么保持運行 接受的答案談到非守護行程執行緒,但我打開的唯一執行緒是守護行程,所以除非 JavaFX 打開一個,否則我不能相信。
那么,為什么該程序會繼續運行,我該如何解決呢?
我還是 Java 新手,所以如果我犯了錯誤和/或我的代碼顯示了不好的做法,請指出它們!
編輯:我使用 JFrame 是因為我需要 setAlwaysOnTop,因為使用
JOptionPane.showMessageDialog(null, message, "Error", JOptionPane.ERROR_MESSAGE);它不是在 JavaFX 視窗的頂部打開它。如果有更好的方法請告訴我。
uj5u.com熱心網友回復:
這:
errorWindow = null;
因為物件仍然顯示,所以沒有任何用處。你想要這個:
errorWindow.dispose();
實際上,更好的是,完全擺脫errorWindow并null作為第一個引數傳遞給 JOptionPane。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/396227.html
上一篇:在JavaSwing應用程式中向Graphics2D面板添加新資料
下一篇:無法檢測與多邊形的碰撞
