隐藏树节点

原创 2007年09月13日 11:29:00
import javax.swing.JTree; 
import javax.swing.JScrollPane; 
import javax.swing.JOptionPane; 
import javax.swing.JCheckBox; 
import javax.swing.JPanel; 
import javax.swing.tree.TreePath; 
import javax.swing.tree.DefaultTreeModel; 
import javax.swing.tree.DefaultMutableTreeNode; 
import java.awt.Dimension; 
import java.awt.BorderLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.Enumeration; 

class FilteredTree 
...
  
private class PlainBelliedSneech ...
    
public String toString() ...return "Plain Bellied Sneech"; } 
  }
 

  
private class StarBelliedSneech ...
    
public String toString() ...return "Star Bellied Sneech"; } 
  }
 

  
private class FilteredTreeModel 
    
extends DefaultTreeModel 
  
...
    
private boolean mShowStarBelliedSneeches= true
    
private DefaultMutableTreeNode mRoot; 

    FilteredTreeModel(DefaultMutableTreeNode root) 
    
...
      
super(root); 
      mRoot
= root; 
    }
 

    
public Object getChild(Object parent, int index) 
    
...
      DefaultMutableTreeNode node
= 
        (DefaultMutableTreeNode) parent; 

      
if (mShowStarBelliedSneeches) 
        
return node.getChildAt(index); 
       
      
int pos= 0
      
for (int i= 0, cnt= 0; i< node.getChildCount(); i++...
        
if (((DefaultMutableTreeNode) node.getChildAt(i)).getUserObject() 
                
instanceof PlainBelliedSneech) 
        
...
          
if (cnt++ == index) ...
            pos
= i; 
            
break
          }
 
        }
 
      }
 

      
return node.getChildAt(pos); 
    }
 

    
public int getChildCount(Object parent) 
    
...
      DefaultMutableTreeNode node
= 
        (DefaultMutableTreeNode) parent; 

      
if (mShowStarBelliedSneeches) 
        
return node.getChildCount(); 

      
int childCount= 0
      Enumeration children
= node.children(); 
      
while (children.hasMoreElements()) ...
        
if (((DefaultMutableTreeNode) children.nextElement()).getUserObject() 
                
instanceof PlainBelliedSneech) 
          childCount
++
      }
 

      
return childCount; 
    }
 

    
public boolean getShowStarBelliedSneeches() ...
      
return mShowStarBelliedSneeches; 
    }
 

    
public void setShowStarBelliedSneeches(boolean showStarBelliedSneeches) 
    
...
      
if (showStarBelliedSneeches != mShowStarBelliedSneeches) ...
        mShowStarBelliedSneeches
= showStarBelliedSneeches; 
        Object[] path
= ...{ mRoot }
        
int[] childIndices= new int[root.getChildCount()]; 
        Object[] children
= new Object[root.getChildCount()]; 
        
for (int i= 0; i< root.getChildCount(); i++...
          childIndices[i]
= i; 
          children[i]
= root.getChildAt(i); 
        }
 
        fireTreeStructureChanged(
this, path, childIndices, children); 

      }
 
    }
 
  }
 

  
private FilteredTree() 
  
...
    
final DefaultMutableTreeNode root= new DefaultMutableTreeNode("Root"); 

    DefaultMutableTreeNode parent; 
    DefaultMutableTreeNode child; 

    
for (int i= 0; i< 2; i++...
      parent
= new DefaultMutableTreeNode(new PlainBelliedSneech()); 
      root.add(parent); 
      
for (int j= 0; j< 2; j++...
        child
= new DefaultMutableTreeNode(new StarBelliedSneech()); 
        parent.add(child); 
        
for (int k= 0; k< 2; k++
          child.add(
new DefaultMutableTreeNode(new PlainBelliedSneech())); 
      }
 
      
for (int j= 0; j< 2; j++
        parent.add(
new DefaultMutableTreeNode(new PlainBelliedSneech())); 

      parent
= new DefaultMutableTreeNode(new StarBelliedSneech()); 
      root.add(parent); 
      
for (int j= 0; j< 2; j++...
        child
= new DefaultMutableTreeNode(new PlainBelliedSneech()); 
        parent.add(child); 
        
for (int k= 0; k< 2; k++
          child.add(
new DefaultMutableTreeNode(new StarBelliedSneech())); 
      }
 
      
for (int j= 0; j< 2; j++
        parent.add(
new DefaultMutableTreeNode(new StarBelliedSneech())); 

    }
 

    
final FilteredTreeModel model= new FilteredTreeModel(root); 
    JTree tree
= new JTree(model); 
tree.setShowsRootHandles(
true); 
tree.putClientProperty(
"JTree.lineStyle""Angled"); 
    tree.setRootVisible(
false); 

    JScrollPane sp
= new JScrollPane(tree); 
    sp.setPreferredSize(
new Dimension(200,400)); 

    
final JCheckBox check= new JCheckBox("Show Star Bellied Sneeches"); 
    check.setSelected(model.getShowStarBelliedSneeches()); 

    check.addActionListener(
new ActionListener() ...
      
public void actionPerformed(ActionEvent e) ...
        model.setShowStarBelliedSneeches(check.isSelected()); 
      }
 
    }
); 

    JPanel panel
= new JPanel(new BorderLayout()); 
    panel.add(check, BorderLayout.NORTH); 
    panel.add(sp, BorderLayout.CENTER); 

    JOptionPane.showOptionDialog( 
      
null, panel, "Sneeches on Beeches"
      JOptionPane.DEFAULT_OPTION, 
      JOptionPane.PLAIN_MESSAGE, 
      
nullnew String[0], null 
    ); 

    System.exit(
0); 
  }
 

  
public static void main(String[] argv) ...
    
new FilteredTree(); 
  }
 
}
 

Extjs treePanel过滤查询功能

我们在使用普通的store时,extjs提供了filterBy,filter等多种方法来过滤数据达到查询效果,但在treepanel中的streeStore却没有实现这个查询,于是,就有了这篇文章。 ...
  • xiaobai51509660
  • xiaobai51509660
  • 2014年06月30日 16:50
  • 3164

JQuery采用CSS实现DOM元素的显示和隐藏

今天参加了一个Code Review看了一个同事的写的代码,感觉满足了当前的功能实现,但是从长远来看,无论从代码复用角度还是维护上看都显得非常差。采用CSS实现DOM元素是一种比较合理高效的做法。...
  • dotnetstudio
  • dotnetstudio
  • 2014年10月03日 13:15
  • 4184

由802.11 隐藏节点引发的一些思考

本来对隐藏节点不太清楚,查了些资料了解后,对为什么会产生隐藏节点,如何解决该问题,产生了疑问,顺便又搜了些资料,这里做了个总结。首先介绍下802.11 MAC的CSMA/CA,接着讲述下隐藏节点的分类...
  • rongtao12
  • rongtao12
  • 2013年07月03日 12:45
  • 2286

前端开发树节点PC端

  • 2017年05月19日 11:33
  • 96KB
  • 下载

根据输入的关键字过滤ext树节点

  • 2014年07月21日 11:53
  • 21KB
  • 下载

WPF-Win8树节点效果-源码

  • 2014年03月26日 11:07
  • 52KB
  • 下载

异步&amp;同步加载树节点----zTree(一)

  • 2014年07月26日 16:40
  • 2.07MB
  • 下载

读取数据库 动态生成树节点

  • 2010年04月08日 15:27
  • 163KB
  • 下载

C#三层结构搜素树节点

  • 2013年05月23日 14:49
  • 59KB
  • 下载

二叉树节点计算器1.2测试版

  • 2012年06月23日 19:51
  • 6KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:隐藏树节点
举报原因:
原因补充:

(最多只允许输入30个字)