我有一個JFrame
,這個JFrame
有一個JButton
。
在JFrame上顯示JDialog(「請稍候」)
我想在JButton
第一顯示JDialog
(顯示"Please wait"
),並執行其他代碼然後關閉JDialog
。
但是當顯示JDialog
停止執行JButton
上的其他代碼時。
我有一個JFrame
,這個JFrame
有一個JButton
。
在JFrame上顯示JDialog(「請稍候」)
我想在JButton
第一顯示JDialog
(顯示"Please wait"
),並執行其他代碼然後關閉JDialog
。
但是當顯示JDialog
停止執行JButton
上的其他代碼時。
開始Thread
(例如在SwingWorker
)和其開始處的其他處理,請致電modalDialog.setVisible(true)
。任務結束時致電setVisible(false)
。
也許jdialog處於模態模式,請嘗試更改jdialog的模態屬性:yordialog.setModal(false)
。
我會建議創建一個簡單的JDialog,然後在代碼運行後處置它。你可以用下面的代碼創建的JDialog:
JDialog dialog = new JDialog();
JLabel label = new JLabel("Please wait...");
dialog.setLocationRelativeTo(null);
dialog.setTitle("Please Wait...");
dialog.add(label);
dialog.pack();
並實施這樣的:
dialog.setVisible(true); // show the dialog on the screen
// Do something here
dialog.setVisible(false); // set visibility to false when the code has run
它停下來,因爲你所使用的用於執行代碼「主線程」和顯示JDialog。
爲了解決這個問題,你應該考慮像SwingWorker
恕我直言,這是最好的答案。爲什麼添加線程的額外複雜性,如果他們不是必需的。 – 2016-10-19 10:58:08
這很簡單,但在某些情況下可能無法工作......'javax.swing'花了一段時間來創建或繪製框架。因此,您的消息可能不會顯示,因爲JVM不會等到擺動完成其工作。該線程可能會轉到'//在此處執行某些操作。 – 2017-06-15 06:50:35