回答
您将需要实现TreeCellRenderer的CustomCellRenderer,并将其附加到JTree。
在你的CustomCellRenderer中,你可以放置按钮和图标。
JTree tree = new JTree(rootVector);
TreeCellRenderer renderer = new CustomCellRenderer();
tree.setCellRenderer(renderer);
检查这个例子:(上面的代码中引用从这里)
http://www.java2s.com/Code/Java/Swing-JFC/TreeCellRenderer.htm
您可以将TreeCellRenderer添加到您的JTree。该渲染器可以在树的每个元素上渲染一个图标。
从JTree的Javadoc中:
要使用的JTree显示化合物节点(例如,同时包含一个图形图标和文本节点),子类
javax.swing.tree.TreeCellRenderer
并使用setCellRenderer
通知树使用它。
复合节点是你想要的。你必须实现单一的方法,这将返回一个Composite
对象,在你的情况下,一个包含一个按钮和一个标签并排的小面板。
钳,
您是否有这样的成功?我想要做同样的事情,并且很难让JButton响应用户。设置渲染器让按钮显示顺利,但所有鼠标事件都由JTree自己处理,而不是传递给我的按钮。
我终于找到了解决办法,我想我会在这里发布为他人评论(也许还有更好的办法吗?)
除了我的自定义渲染,我还创建了一个扩展DefaultTreeCellEditor中自定义编辑器。我的自定义渲染器通过构造函数传递到自定义编辑器中。在编辑器中,我重写isCellEditable以返回true,并重写getTreeCellEditorComponent以返回renderer.getTreeCellRendererComponent。这是关键。它返回渲染器组件,这样所有的点击都会被传递到我的自定义渲染器中的面板中,然后我的JButton会正常响应动作事件。
这里是我的编辑:
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()));
- 1. Swing JFrame:如何将自定义按钮添加到jframe标题
- 2. 将自定义按钮添加到Sharepoint 2013列表项目
- 3. 将自定义按钮添加到SlickGrid?
- 4. 将自定义按钮添加到Galleria
- 5. 添加自定义字体到一个酒吧按钮项目
- 6. 将“扩展”按钮添加到没有子项的JTree节点?
- 7. 图像未添加到项目添加到自定义列表
- 8. XPages:将按钮添加到数据视图自定义控件
- 9. 将按钮添加到Android中的自定义视图中
- 10. 将按钮添加到c#mvc项目
- 11. Java:将图形项添加到框架
- 12. 如何自定义HTML或按钮添加到ActiveAdmin形式
- 13. 添加自定义项目到TShellTreeView
- 14. 将按钮添加到使用java图形的contentPane
- 15. 将自定义索引添加到JTree节点
- 16. 在Java Swing中将按钮添加到JPanel
- 17. 添加自定义按钮的UITabBarController(中间添加按钮)
- 18. 将自定义按钮应用到自定义按钮
- 19. Java:将MouseListener添加到自定义JComponent
- 20. 将自定义矩形添加到自定义RelativeLayout中
- 21. 自定义圆形按钮
- 22. 自定义按钮形状
- 23. 使用自定义按钮将自定义类添加到tinyMCE主体
- 24. 将新项目数添加到按钮上的图标 - Android
- 25. 自定义背栏项目按钮
- 26. 的Java Swing自定义形状(2D图形)
- 27. 如何将libusb添加到java swing netbeans项目?
- 28. 到自定义视图中添加一个按钮在安卓
- 29. 添加图片到Joomla JToolBar中自定义链接按钮
- 30. 将自定义按钮添加到iphone应用程序
+1。 1.5年过去了,这对我们有很大的帮助。谢谢。 – sqram 2012-02-26 20:08:42
+1。我只使用了TreeCellEditor接口,因为DefaultTreeCellEditor有很多不必要的功能。 – Nulano 2015-08-24 09:29:56