另一种可能性是使用以下方法为您的 shell(应该只打开一次)提供一个唯一的 ID:
shell.setData("yourID");
如果您有SelectionListener
(例如),您可以检查Shell
带有 IDyourID
的是否已经打开。
行动:
- 如果在
Shell
某处打开:激活外壳(设置焦点)
- 如果
Shell
没有打开:打开外壳
示例(见评论):
yourButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
// Loop through all active shells and check if
// the shell is already open
Shell[] shells = Display.getCurrent().getShells();
for(Shell shell : shells) {
String data = (String) shell.getData();
// only activate the shell and return
if(data != null && data.equals("yourID")) {
shell.setFocus();
return;
}
}
// open the shell and the dialog
Shell shell = new Shell(Display.getCurrent());
shell.setData("yourID");
YourDialog yourDialog = new YourDialog(shell);
yourDialog.open();
}
});