gpt4 book ai didi

java - Swing:如何将 JTree 与 JTextPanes 作为节点一起使用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:20:20 25 4
gpt4 key购买 nike

JTree 使用 DefaultTreeCellRenderer 作为单元渲染器。
此类是 JLabel 的子类。

我想用 JTree 来处理比 JLabel 更复杂的元素,比如JTextPane.

问题是:我不能继承 DefaultTreeCellRenderer,因为它仍将是 JLabel

自己写一个TreeCellRenderer太复杂了。
为什么?因为:DefaultTreeCellRenderer 有 17 个字段,并且不仅仅是实现 TreeCellRenderergetTreeCellRendererComponent(...)

你能想出什么简单的解决方案?

我需要树元素是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com