gpt4 book ai didi

java - 树单元渲染器 : applying different style of the node's text which is depending on the user object's type

转载 作者:行者123 更新时间:2023-12-01 15:41:27 29 4
gpt4 key购买 nike

我有一棵只有 DefaultMutableTreeNodes 的树。我想编写一个 TreeCellRenderer ,它取决于所包含的用户对象的类型。我尝试编写一个简单的示例(这不起作用。这就是我最终来到这里的原因)。在根节点之后的第一层,用户对象的类型是 AANodeUserObjectLocalAANodeUserObject。即使可能没有子目录,两者都应该使用目录图标呈现。该渲染器的另一个功能是,当用户对象类型 AANodeUserObject 不是“当前”时,它应该以红色和粗体渲染节点(在我的示例中,这始终为 true)。这是我的代码:

    public Component getTreeCellRendererComponent(final JTree tree, final Object value, final boolean sel, final boolean expanded, final boolean leaf, final int row, final boolean hasFocus)
{
super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
// Precondition für Default TreeNode
Object userObject = ((DefaultMutableTreeNode) value).getUserObject();
if (userObject instanceof TestTree.AANodeUserObject || userObject instanceof TestTree.LocalAANodeUserObject)
{
if (expanded)
{
setIcon(openIcon);
}
else
{
setIcon(closedIcon);
}
}

if (userObject instanceof TestTree.AANodeUserObject)
{
TestTree.AANodeUserObject aAnode = (TestTree.AANodeUserObject) userObject;
if (!mVersionInfo.get(aAnode))
{
renderOutdatedAaNode();
} else {
renderDefault();
}
} else {
renderDefault();
}
return this;
}

private void renderDefault()
{
setTextNonSelectionColor(cColorBlack);
setTextSelectionColor(cColorBlack);
setFont(getFont().deriveFont(Font.PLAIN));
}

private void renderOutdatedAaNode()
{
setTextNonSelectionColor(cColorRed);
setTextSelectionColor(cColorRed);
setFont(getFont().deriveFont(Font.BOLD));
}

结果可以在附图The resulting tree中看到。

令我恼火的是目录图标工作正常,文本样式却不行:只有第二个节点( HashMap 值为 false)AANodeUserObject 应该是红色的,没有其他东西。我究竟做错了什么?有人可以帮忙吗?谢谢!马蒂亚斯

最佳答案

Boolean isCurrent = false;
if (!isCurrent)

你想用这段代码做什么?

您还需要为此“if”实现“else”:

if (userObject instanceof TestTree.AANodeUserObject)
{
//...
}

否则你的所有渲染器组件都将以红色字体打印。

关于java - 树单元渲染器 : applying different style of the node's text which is depending on the user object's type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7984293/

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