java - 选择 SWT.Tree 中的 SWT.TreeItem

标签 java tree swt

所以,我有以下代码

tree.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(SelectionEvent e) {
        System.out.println("Clicked Item>>" + tree.getSelection()[0].toString());
    }
});`

如何更改它,以便仅当我在该 Tree 中选择 TreeItem 时触发,但在展开或任何其他事件时触发?

最佳答案

您可以使用 JFace 来处理它:

TreeViewer viewer = new TreeViewer(tree);
viewer.addSelectionChangedListener(new ISelectionChangedListener() {
    @Override
    public void selectionChanged(SelectionChangedEvent event) {
        IStructuredSelection selection = (IStructuredSelection) event.getSelection();
        System.out.println("Clicked Item>>" + selection.getFirstElement());
    }
});

不过,您将不会使用 TreeItems。使用 setInput() 将模型传递给查看器。设置内容提供程序来处理您的模型,并设置标签提供程序来处理显示的内容。

viewer.setLabelProvider(labelProvider);
viewer.setContentProvider(provider);
viewer.setInput(input);

这是一个示例:http://www.vogella.com/tutorials/EclipseJFaceTree/article.html

根据评论进行编辑:

根据您使用的模型,您可能会发现所选元素是否具有模型元素的子元素。 (例如,具有 getChildren() 或 hasChilrden() 方法的 TreeNode 对象)
如果您使用 ITreeContentProvider 作为内容提供程序(这可能是正确的),您可以执行以下操作:

IStructuredSelection selection = (IStructuredSelection) event.getSelection();
Object element = selection.getFirstElement();
System.out.println("Clicked Item>>" + element);
((ITreeContentProvider)viewer.getContentProvider()).hasChildren(element);

关于java - 选择 SWT.Tree 中的 SWT.TreeItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31608971/

相关文章:

java - 值未从 TextBox 传递到 Servlet 文件

java - 过滤未知类型对象的最干净模式?

java - JBoss JNP 作为独立服务器并使用来自 tomcat 的 context.xml 的资源配置

c - 如何解析整个 2-3 树?

java - 选择时的 SWT 表格单元格前景

java - 将 Jackson ObjectMapper 与 Jersey 一起使用

java - 遍历引用 Java 中的父节点的分层列表/树

svn - 如果我想保留本地更改,解决与 TortoiseSVN 树冲突的最佳方法是什么?

java - SWT 文件对话框 : Selecting directories instead of files

java - 在 Eclipse 中单击自定义菜单项时显示对话框