相关疑难解决方法(0)

TreeCellRenderer:如何设置背景颜色?

我编写了一个自定义的TreeCellRenderer来更改组件外观.一切正常,但setBackground没有效果.代码肯定是执行的,因为前景色总是正确地改变.由于所选项目以蓝色呈现并且取消选择白色项目(没有自己编写该代码),我认为我的更改被JTree覆盖.那么改变背景颜色的正确方法是什么?

这基本上是我的代码:

JTree tree = new JTree(); 
tree.setCellRenderer(new MyCellRenderer()); 

///////

public class MyCellRenderer extends DefaultTreeCellRenderer{

   @Override
   public Component getTreeCellRendererComponent(JTree tree, Object value,
        boolean isSelected, boolean expanded, boolean leaf, int row,
        boolean hasFocus) {

    JComponent c = (JComponent) super.getTreeCellRendererComponent(tree, value, isSelected, expanded, leaf, row, hasFocus);
      DefaultMutableTreeNode node = (DefaultMutableTreeNode) value; 
      MyData data = (MyData)node.getUserObject();   
      if(data.isX()){
          c.setForeground(Color.blue); 
          c.setBackground(Color.gray); 
      }
      return c; 
    }
}
Run Code Online (Sandbox Code Playgroud)

java swing jtree

5
推荐指数
1
解决办法
2938
查看次数

在不重新绘制树的情况下更新JTree中的ImageIcon?

基本上我编辑属性private string status="OK"UserObject()的一个DefaultTreeNode().

我有其中CustomRenderer implements DefaultCellRenderer,其通过渲染的"OK"属性设置图标UserObjectTreeNode.

最初,当我选择一个节点时,图标会发生变化.我正在使用Tree.revalidate()&Tree.repaint(),并且正在反映这一变化.

但是,我不确定这是否非常有效.这样做的正确方法是什么?我尝试过,TreeModel.nodesChanged(new DefaultMutableTreeNode(myUserObject))TreeNodeChanged event不会开火.

因此,每次更改TreeNode的用户工作以查看图形更新时,我是否坚持使用重新绘制整个树?

java swing jtree repaint treemodel

1
推荐指数
1
解决办法
3729
查看次数

标签 统计

java ×2

jtree ×2

swing ×2

repaint ×1

treemodel ×1