gpt4 book ai didi

Java 改变对话框的标题

转载 作者:行者123 更新时间:2023-12-01 12:52:40 25 4
gpt4 key购买 nike

我正在 try catch SWT 事件,例如 Eclipse 中的 SWT.activate、SWT.deactivate 和 SWT.dispose。因此,我可以看到哪个对话框被打开或激活,哪个对话框被关闭,哪个被停用。如果事件被捕获,我将提取 Shell 对象并使用 shell.getText() 提取其标题。为了监听事件,我使用了一个无类型监听器(已编辑):

PlatformUI.getWorkbench().getDisplay().addFilter(SWT.Activate, shellListener);
Listener shellListener = new Listener(){
@Override public void handleEvent(Event e) {
if (event.widget.getClass() == org.eclipse.swt.widgets.Shell.class){
Shell shell = (Shell) e.widget;
String shellTitle = shell.getText();
if (event.type == Activate) {
String message = "The following dialog was activated: " + shellTitle;
// do other stuff with 'message'
}
}
}
};

如果在 Eclipse 中我打开“新建”,并且上面的监听器正确地将“新建”显示为激活的对话框。但是,如果我在“新建”对话框中选择“Java 接口(interface)”,那么我将进入一个名为“新建 Java 接口(interface)”的对话框。但是我的 handleEvent 方法没有被触发,因此我无法提取新的对话框标题。我的问题是:当我在 Eclipse 对话框中并单击其中的某些内容并导致我进入另一个对话框(具有新标题)时,会调用什么类型的事件或会发生什么?

最佳答案

我认为这里的问题来自于 Eclipse 中的新“对话框”实际上是一个向导。当您选择“Java Interface”(在“新建”对话框中)时,您实际上不会登录到另一个对话框,而是登录到同一向导中的页面。此向导中的每个页面都可以有自己的标题,但在幕后它是相同的底层 shell 对象,这就是为什么您不会收到进一步的事件。

顺便说一句:当使用 SWT.ActivateSWT.Deactivate 和其他类似的 shell 事件时,ShellAdapter 可能会更有帮助/更容易。

关于Java 改变对话框的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24106428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com