【问题标题】:JTree disable highlight effect on certain nodesJTree 在某些节点上禁用高亮效果
【发布时间】:2014-05-08 01:32:49
【问题描述】:

我有一个Jtree,我需要移除某个节点上的高亮效果。

所以,现在我为所有节点准备了这个

我想在某个节点上有这个:

我怎样才能做到这一点? 谢谢

【问题讨论】:

标签: java swing jtree defaultmutabletreenode


【解决方案1】:

-首先:您需要使用以下方法为节点设置一个对象(具有您自己的属性):

Group aGroup = new Group(); //Obviously use your correct constructor 
DefaultMutableTreeNode node = new DefaultMutableTreeNode(yourObject);

记得在Group类中实现toString方法

-第二个: 创建一个扩展 DefaultTreeCellRenderer 的新类并覆盖 getTreeCellRendererComponent,如下所示:

public class MyRenderer extends DefaultTreeCellRenderer {

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

            DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;

            if(node.getUserObject().getYourProperty()){
                 setTextNonSelectionColor(Color.BLACK);
                 setBackgroundSelectionColor(Color.BLUE);
                 setTextSelectionColor(Color.WHITE);
                 setBorderSelectionColor(Color.WHITE);
            }
           else{
                 setTextNonSelectionColor(Color.LIGHT_GRAY);
                 setBackgroundSelectionColor(Color.RED);
                 setTextSelectionColor(Color.WHITE);
                 setBorderSelectionColor(Color.WHITE);
           }

            super.getTreeCellRendererComponent(
                tree, value, sel, exp, leaf, row, hasFocus);
            return this;
        }
}

-Third:将渲染器设置为树:

yourTree.setCellRenderer(new MyRenderer());

【讨论】:

    【解决方案2】:

    你不能用这样的东西吗?不确定实用性,没有测试过

    tree.addMouseListener (new MouseAdapter (){
    
            public void mousePressed ( MouseEvent e ){
    
               // Check for right click
               if (SwingUtilities.isRightMouseButton(e)){
    
                      int selection[] = tree.getSelectionRows();
    
                      for(int i=0; i< selection.size; i++){
    
                         tree.removeSelectionInterval(selection[i], selection[i]);
                      }
               }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 2011-01-03
      相关资源
      最近更新 更多