java Swing : add custom graphical button to JTree item

标签 java swing jtree

我想在 JTree 中的项目右侧添加一个带有小图标的附加按钮。 这可以做到吗?如果是,怎么办?

谢谢!

最佳答案

夹子,

你成功了吗?我想做同样的事情,但很难让 JButton 响应用户。设置呈现器以使按钮显示顺利进行,但所有鼠标事件均由 JTree 本身处理,而不是传递到我的按钮。

我终于找到了一个解决方案,我想我会把它贴在这里供其他人评论(也许有更好的方法?)

除了我的自定义渲染器之外,我还创建了一个扩展 DefaultTreeCellEditor 的自定义编辑器。我的自定义渲染器通过构造函数传递到自定义编辑器中。在编辑器中,我覆盖 isCellEditable 以返回 true,我覆盖 getTreeCellEditorComponent 以返回 renderer.getTreeCellRendererComponent。这是关键。它返回渲染器组件,然后所有点击都传递到我的自定义渲染器中的面板,然后我的 JButton 正常响应 Action 事件。

这是我的编辑:

public class MyTreeCellEditor extends DefaultTreeCellEditor  {



    public MyTreeCellEditor(JTree tree, DefaultTreeCellRenderer renderer) {
        super(tree, renderer);
    }

    public Component getTreeCellEditorComponent(JTree tree, Object value,
            boolean isSelected, boolean expanded, boolean leaf, int row) {
        return renderer.getTreeCellRendererComponent(tree, value, true, expanded, leaf, row, true);
    }

    public boolean isCellEditable(EventObject anEvent) {
        return true; // Or make this conditional depending on the node
    }
}

在你的树上,一定要设置你的自定义编辑器:

myTree.setCellEditor(new MyTreeCellEditor(myTree, (DefaultTreeCellRenderer) myTree.getCellRenderer()));

关于java Swing : add custom graphical button to JTree item,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3510253/

相关文章:

java - JPA、Eclipselink 和 Guice 的 NullPointerException

java - 干净的代码——Java静态函数和变量重用

java - 变量在 if 语句之外未更新

java - 递归解析XML文件jdom

java - CSVFormat.RFC4180 忽略 .csv 文件中带引号的值

java - PlayFramework 2.2 Java Action 组合

java - 如何编辑 .class 文件来修复 Java 7 中的 validateTree 错误

Java SecurityManager @Override public void checkPermission(Permission perm)

java - 在java swing中突出显示树中搜索到的节点

swing - 斯卡拉 Swing 中的树