如何在java中实现“保存…”对话框?

gdx19jrr  于 2021-07-05  发布在  Java
关注(0)|答案(4)|浏览(321)

我想弹出一个对话框,上面写着“正在保存…”,一旦操作完成,它就会消失。在保存过程中,我不希望用户能够做任何事情。我也不想要一个确定按钮。
允许我这样做的java类的名称是什么?

j7dteeu8

j7dteeu81#

您还可以考虑在对话框中使用javax.swing.jprogressbar,以便显示正在发生的进展。如果在保存过程中有足够的信息给出完成的百分比,则可以显示该百分比,如果没有,则可以显示为不确定(前后移动直到完成)。然后在保存过程完成后处理该对话框——这将是一个很好的用户体验增强,而不是在固定时间内显示静态文本消息。下面是一个演示java代码的教程,其中显示了一个示例对话框:http://java.sun.com/docs/books/tutorial/uiswing/components/progress.html.

yiytaume

yiytaume2#

我想你可能想要一个模态jdialog。它们使阻止整个应用程序的用户交互变得相当容易,而且您还有一些额外的控制。
如果保存操作花费的时间超过2秒,则发布的代码段可能会出现问题。我建议在当前有thread.sleep()的地方调用save()函数。这样,您就知道无论保存需要多长时间,ui都会被阻塞。

slmsl1lt

slmsl1lt3#

我想jdialog就是你想要的-一定要打电话 setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE) 因为与jframe不同,它的默认行为是 HIDE_ON_CLOSE .

cedebl8k

cedebl8k4#

下面是我发现的最终代码,大致模拟了我想做的事情:

// Create dialog box
JDialog dialog = new JDialog(new JFrame(), "Saving...");

// IMPORTANT: setLocationRelativeTo(null) is called AFTER you setSize()
// otherwise, your dialog box will not be at the center of the screen!
dialog.setSize(200,200);
dialog.setLocationRelativeTo(null);
dialog.toFront(); // raise above other java windows
dialog.setVisible(true);

// Sleep for 2 seconds
try
{
  Thread.sleep(2000);
} catch (InterruptedException ex)
{
  Logger.getLogger(JavaDialogBox.class.getName()).log(Level.SEVERE, null, ex);
}

// Then "close" the dialog box
dialog.dispose();

最后,我发现这3个链接在编写上述代码时非常有用:
将对话框置于屏幕中央
如何创建jdialog
如何暂停执行

相关问题