java - SWT 未启用 shell

标签 java eclipse swt

我试图在单击扩展平台首选项的 Eclipse 插件内的按钮时打开 DateTime shell。

这是按钮SelectionAdapter的代码

    @Override
    public void widgetSelected(SelectionEvent e) {
           super.widgetSelected(e);
          Display display = Display.getCurrent();
          Shell ns = new Shell(display);
          ns.setLayout (new RowLayout ());
          final DateTime calendar = new DateTime (ns, SWT.CALENDAR);
          ns.pack();
          ns.open();
          ns.forceActive();
          ns.setEnabled(true);
          while (!ns.isDisposed()) {
              if (!display.readAndDispatch())
                display.sleep();
           }
    }

如下图所示,已描绘了 shell,但似乎未启用。确实无法选择任何日期或关闭/调整其大小。正如您所看到的,三个按钮(红色、黄色和绿色)显示为灰色。 我做错了什么?

enter image description here

更新

我尝试像这样获取外壳:

  Display display = new Display();
  IWorkbench workbench    = PlatformUI.getWorkbench();
  IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
  Shell shell             = window.getShell();

但现在我明白了 enter image description here

这实际上与我的意图相去甚远。我的目标是显示一个带有 DateTime 小部件的新窗口

更新

我遵循了 Gilbert 的建议并定义了我自己的 JFace Dialog。 正如 Lars Vogel 在 http://www.vogella.com/articles/EclipseDialogs/article.html 中所述我将其创建为 TitleAreaDialog 的扩展。现在可以使用了,但仍有一些地方需要改进。

enter image description here

我想隐藏标题的大标题并隐藏/删除帮助按钮。 有什么办法可以做到这一点吗?我是否扩展了错误的类?

最佳答案

既然您说您正在构建 Eclipse 插件,请尝试以下操作来获取 Shell。

IWorkbench workbench    = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
Shell shell             = window.getShell();

创建您自己的 Shell 并不是一个好主意,除非您在 Eclipse 之外构建 SWT 应用程序。

创建您自己的 Display 并不是一个好主意,除非您在 Eclipse 之外构建 SWT 应用程序。

我认为您正在寻找的是日历对话框。您必须扩展 Eclipse Dialog 类才能创建您自己的对话框。

关于java - SWT 未启用 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14406861/

相关文章:

java - 线程 "main"java.lang.NoClassDefFoundError : org/codehaus/jackson/JsonParseException 中的异常

java - 单元测试自定义输入输出格式

java - 单击按钮时不显示 SQLite 数据库

多媒体键的 Java 接口(interface)

java - SWT中树查看器添加双击展开

java - 使用 RamdomAccesFile 和 FileChannel 对文件进行分块时出现问题

java - 在 Java 中将字符串转换为日期时出现问题

java - 为什么入门书中定义的类型转换和算术运算符的规则看似冲突?

Java 语法突出显示和代码建议对某些文件停止工作

java - SWT MessageBox 不显示正确的图标