我想在 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/