无法在 JFace 对话框的 ListViewer 中获取所选项目

Cannot get the selected item in a ListViewer in a JFace Dialog

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

谢谢!

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

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

  // TODO deal with selection

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

或者在调用 widgetSelected 时保存选择。