作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
JTree
使用 DefaultTreeCellRenderer
作为单元渲染器。
此类是 JLabel
的子类。
我想用 JTree
来处理比 JLabel
更复杂的元素,比如JTextPane
.
问题是:我不能继承 DefaultTreeCellRenderer
,因为它仍将是 JLabel
。
自己写一个TreeCellRenderer
太复杂了。
为什么?因为:DefaultTreeCellRenderer
有 17 个字段,并且不仅仅是实现 TreeCellRenderer
的getTreeCellRendererComponent(...)
。
你能想出什么简单的解决方案?
我需要树元素是 JTextPane
才能执行复杂的格式设置。
最佳答案
public class JTextPaneTreeCellRenderer extends JTextPane implements TreeCellRenderer {
方法:
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
// do stuff to this instance of JTextPane
setEditable(selected);
setText(value.toString()); //Assumes whatever you stuck in the tree has pretty toString
if (leaf)
setBackgroundColor(Color.RED);
return this;
}
您不需要像默认实现那样复杂。使 Renedere 成为 JTextPane
的子类将使该方法的实现更加容易。
关于java - Swing:如何将 JTree 与 JTextPanes 作为节点一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1089090/
我是一名优秀的程序员,十分优秀!