简单地说,我希望将树呈现为第一级粗体。
public class TreeRenderer1 extends DefaultTreeCellRenderer {
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean sel, boolean exp, boolean leaf, int row, boolean hasFocus) {
super.getTreeCellRendererComponent(tree, value, sel, exp, leaf, row, hasFocus);
DefaultMutableTreeNode node = (DefaultMutableTreeNode)value;
if (node.getLevel()==1) {
setFont(getFont().deriveFont(Font.BOLD));
}
return this;
}
}然而,这使得我的树中的所有节点都变得粗放。怎么啦?
发布于 2015-05-12 00:54:42
如果级别不是1,则重置呈现的字体状态.
if (node.getLevel()==1) {
setFont(getFont().deriveFont(Font.BOLD));
} else {
setFont(getFont().deriveFont(Font.PLAIN));
}Render's是一个共享资源,您对其所做的任何更改都会转移到要呈现的下一个元素上,因此您必须始终确保在某个时刻将其设置为“默认”状态。
发布于 2015-05-12 00:55:39
在您的代码中,您为第1级设置了粗体字体,但其他级别的字体呢?其他条件在哪里?你能试试这个吗?
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean sel, boolean exp, boolean leaf, int row, boolean hasFocus) {
super.getTreeCellRendererComponent(tree, value, sel, exp, leaf, row, hasFocus);
DefaultMutableTreeNode node = (DefaultMutableTreeNode)value;
if (node.getLevel()==1) {
setFont(getFont().deriveFont(Font.BOLD));
} else {
setFont(getFont().deriveFont(Font.PLAIN));
}
return this;
}
}https://stackoverflow.com/questions/30179955
复制相似问题