我们的应用程序的首选项是共享的(即办公室中的所有用户都有相同的首选项)。为此,我们实现了一个自定义 IPreferenceStore
,用于将数据保存到数据库或从数据库(重新)加载数据。
现在,当然我们不能在首选项窗口打开时重新加载 IPreferenceStore
- 至少我们应该在这种情况下带来某种消息或其他内容。所以我需要有一种方法来监听 PreferenceDialog
打开。
由于我们正在实现 Eclipse 应用程序,如果无法直接对首选项对话框使用react,那么监听 Shell
打开并检查其标题可能就足够了。
我尝试过的:
// this only reacts to the main window changing
PlatformUI.getWorkbench().addWindowListener(new IWindowListener() { ... });
// shells (and composites in general) are missing listeners for
// adding child controls
Shell currentShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
currentShell.addListener(SWT.???, e-> System.out.println(e));
// what listeners do display even have?
Display.getDefault().addListener(SWT.???, e-> System.out.println(e));
有什么想法吗?
最佳答案
Display.addFilter
for SWT.Activate
确实在激活 shell 时给出一个事件(以及许多其他事情)。由于某种原因 addListener
在我的测试中不起作用。
Display.getDefault().addFilter(SWT.Activate, listener);
Event
的 widget
字段包含正在激活的控件。
关于java - 聆听新贝壳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34784596/