SWT - 仅允许打开1个对话框

时间:2013-01-24 19:38:22

标签: shell dialog swt

我在基本对话框中有一个按钮,用于打开结果对话框。

private void showPlotResultsDialog() {
  resultsDialog = new AplotPlotResultsDialog(getShell());
  resultsDialog.setBlockOnOpen(true);
  resultsDialog.open();

}

允许用户在工作时将结果对话框保持打开状态。但我最近注意到,用户可以多次点击“打开结果对话框” 每次单击都会打开一个新结果对话框。可以打开一些相同的对话框,表中有不同的数据。

  1. 是否可以在点击按钮时查看对话框是否已打开?如果已打开一个,则弹出一条消息,说它已经打开并阻止打开一个新消息。

2 个答案:

答案 0 :(得分:1)

  

是否可以在单击按钮时检查对话框是否已打开?

不确定。只需在您的方法中检查null即可。如果实例不为null,则打开一个对话框。

  

如果已打开一个,则弹出一条消息,说它已经打开并阻止打开一个新消息

最好更新对话框并将焦点设置在对话框上。保存用户必须关闭弹出消息,关闭对话框,然后打开相同的对话框。

答案 1 :(得分:1)

另一种可能性是使用以下方法为您的shell(应该只打开一次)一个唯一的ID:

shell.setData("yourID");

如果您有SelectionListener(例如),则可以检查ID为Shell的{​​{1}}是否已打开。

操作:

  • 如果yourID在某处打开:激活shell(设置焦点)
  • 如果Shell未打开:打开shell

示例(见评论):

Shell