首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JTree中呈现具有多种不同字体的节点

在JTree中呈现具有多种不同字体的节点
EN

Stack Overflow用户
提问于 2011-02-09 17:34:57
回答 2查看 2.5K关注 0票数 0

假设我有一个JTree,它显示多个字符串--例如一个颜色列表。如何用不同的颜色/字体组合来渲染这样的树呢?如何正确实现TreeCellRenderer?

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-09 17:40:18

您可以扩展DefaultTreeCellRenderer。在getTreeCellRendererComponent方法中,您可以调用super()并检查您的条件,例如通过分析值。之后,分别调用setFont()、setBackground()和setForeground()方法。

票数 2
EN

Stack Overflow用户

发布于 2011-02-09 17:59:12

另一种可能的方法是创建一个实现TreeCellRenderer的内部类。然后,您所要做的就是以您想要的方式定制JLabel。

代码语言:javascript
复制
 public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected,
      boolean expanded, boolean leaf, int row, boolean hasFocus) {

    Component returnValue = null;
    if ((value != null) && (value instanceof DefaultMutableTreeNode)) {
      Object userObject = ((DefaultMutableTreeNode) value).getUserObject();
      if (userObject instanceof Employee) {
        Employee e = (Employee) userObject;
        firstNameLabel.setText(e.firstName);
        lastNameLabel.setText(e.lastName);
        salaryLabel.setText("" + e.salary);
        if (selected) {
          renderer.setBackground(backgroundSelectionColor);
        } else {
          renderer.setBackground(backgroundNonSelectionColor);
        }
        renderer.setEnabled(tree.isEnabled());
        returnValue = renderer;
      }
    }
    if (returnValue == null) {
      returnValue = defaultRenderer.getTreeCellRendererComponent(tree, value, selected, expanded,
          leaf, row, hasFocus);
    }
    return returnValue;
  }

摘自this site

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4943083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档