Java - 在任务完成时关闭JOptionPane

时间:2015-07-26 08:32:43

标签: java dispose joptionpane

我想要一个没有按钮的JOptionPane,并且用户无法关闭它以相对于另一个组件出现在屏幕的中心。然后我想执行一些其他代码,之后我将关闭JOptionPane。

这就是我所拥有的:

JOptionPane uploadPane = new JOptionPane("Uploading data...", JOptionPane.INFORMATION_MESSAGE, JOptionPane.DEFAULT_OPTION, null, new Object[]{}, null);
JDialog dialog = new JDialog();
dialog.setTitle("Uploading");
dialog.setModal(true);
dialog.setContentPane(uploadPane);
dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
dialog.pack();
dialog.setVisible(true);
dialog.setLocationRelativeTo(this);

// TODO: Upload data

dialog.dispose();

此代码在屏幕的左上角创建一个JOptionPane,显示我想要显示的方式(除了它的位置)。但是,它没有关闭。

当我摆脱界限时:

dialog.setModal(true);

JOptionPane在应该存在的位置创建,并根据dispose命令关闭。但是,出于某种原因,它没有说什么。除标题外没有任何消息或图标。

如何让它发挥作用?

1 个答案:

答案 0 :(得分:0)

Check this SO post

如果在JDialog中将模型设置为true,则只要JDialog设置为可见,执行就会停止,执行将等到对话框关闭。

但是在您的代码中,您已经提供了dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);

因此无法关闭对话框,这意味着您的应用程序执行将永远等待

这意味着,

dialog.setLocationRelativeTo(this);

并且根本不会执行任何后续行。