Java 在JFrame上显示JDialog(“请稍候”)

Java 在JFrame上显示JDialog(“请稍候”),java,swing,jframe,jdialog,Java,Swing,Jframe,Jdialog,我有一个JFrame,这个JFrame有一个JButton 我想在JButton中首先显示JDialog(显示“请稍候”)并执行其他代码,然后关闭JDialog 但是,当显示JDialog停止以在JButton上执行其他代码时,可能JDialog处于模态模式,请尝试更改JDialog的模态属性:yordialog.setModal(false)在线程上启动其他处理(例如在a中),并在其开始时,调用modalDialog.setVisible(true)。在任务调用的末尾,我建议创建一个简单的JD

我有一个
JFrame
,这个
JFrame
有一个
JButton

我想在
JButton
中首先显示
JDialog
(显示
“请稍候”
)并执行其他代码,然后关闭
JDialog


但是,当显示
JDialog
停止以在
JButton

上执行其他代码时,可能JDialog处于模态模式,请尝试更改JDialog的模态属性:
yordialog.setModal(false)
线程上启动其他处理(例如在a中),并在其开始时,调用
modalDialog.setVisible(true)
。在任务调用的末尾,我建议创建一个简单的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


要解决这个问题,你应该研究类似的问题,这是最好的答案。如果线程不是必需的,为什么还要增加线程的额外复杂性呢?这很简单,但在某些情况下可能不起作用
javax.swing
创建或绘制框架需要花费大量时间。因此,您的消息可能不可见,因为JVM不会等到swing完成其工作。线程可能会转到
//在此处执行某些操作