首页 > 解决方案 > 无法在 JFace 对话框的 ListViewer 中获取所选项目

问题描述

我使用 Windows Builder 创建了一个从 JFace Dialog 继承的对话框类。在那,我添加了一些控件,包括一个按钮和一个 JFace ListViewer。在widgetSelected()按钮的功能中,我可以在 ListViewer 中取出所选项目。但是在 `okPressed() 中,我无法得到这个。我不知道为什么。你能帮助我吗?

谢谢!

标签: jfacercp

解决方案


如果您想访问其中的 UI 元素,okPressed则必须在调用之前这样做,super.okPressed()因为这将关闭对话框并释放控件。所以像:

@Override
protected void okPressed()
{
  IStructuredSelection sel = viewer.getStructuredSelection();

  // TODO deal with selection

  // Call super.okPressed() last
  super.okPressed();
}

或者,当您widgetSelected被调用时保存选择。


推荐阅读