Advertisement
Guest User

Untitled

a guest
May 4th, 2015
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.82 KB | None | 0 0
  1. tree.setSelectionPath(path);
  2. tree.scrollPathToVisible(path);
  3.  
  4. private TreePath find(DefaultMutableTreeNode root, String s) {
  5. @SuppressWarnings("unchecked")
  6. Enumeration<DefaultMutableTreeNode> e = root.depthFirstEnumeration();
  7. while (e.hasMoreElements()) {
  8. DefaultMutableTreeNode node = e.nextElement();
  9. if (node.toString().equalsIgnoreCase(s)) {
  10. return new TreePath(node.getPath());
  11. }
  12. }
  13. return null;
  14. }
  15.  
  16. import java.awt.BorderLayout;
  17. import java.awt.event.ActionEvent;
  18. import java.awt.event.ActionListener;
  19. import java.util.ArrayList;
  20. import java.util.Enumeration;
  21. import java.util.List;
  22.  
  23. import javax.swing.JButton;
  24. import javax.swing.JFrame;
  25. import javax.swing.JScrollPane;
  26. import javax.swing.JTextField;
  27. import javax.swing.JTree;
  28. import javax.swing.tree.DefaultMutableTreeNode;
  29. import javax.swing.tree.DefaultTreeModel;
  30. import javax.swing.tree.TreePath;
  31.  
  32. public class TreeDemo extends JFrame implements ActionListener{
  33. private static final long serialVersionUID = 1L;
  34. public JTree tree;
  35. public JButton button;
  36. public JTextField text;
  37.  
  38. public TreeDemo() {
  39.  
  40. button = new JButton("Enter search text below and click");
  41. text = new JTextField();
  42.  
  43.  
  44. button.addActionListener(this);
  45.  
  46. tree = new JTree();
  47. DefaultMutableTreeNode root = new DefaultMutableTreeNode( "Deck" );
  48. DefaultMutableTreeNode itemClubs= new DefaultMutableTreeNode( "Clubs" );
  49. addAllCard( itemClubs );
  50. root.add( itemClubs );
  51.  
  52. DefaultMutableTreeNode itemDiamonds = new DefaultMutableTreeNode( "Diamonds" );
  53. addAllCard( itemDiamonds );
  54. root.add( itemDiamonds );
  55.  
  56. DefaultMutableTreeNode itemSpades = new DefaultMutableTreeNode( "Spades" );
  57. addAllCard( itemSpades );
  58. root.add( itemSpades );
  59.  
  60. DefaultMutableTreeNode itemHearts = new DefaultMutableTreeNode( "Hearts" );
  61. addAllCard( itemHearts );
  62. root.add( itemHearts );
  63.  
  64. DefaultTreeModel treeModel = new DefaultTreeModel( root );
  65. tree = new JTree( treeModel );
  66.  
  67. JScrollPane scrollPane = new JScrollPane(tree);
  68. getContentPane().add(scrollPane, BorderLayout.CENTER);
  69. getContentPane().add(button, BorderLayout.NORTH);
  70. getContentPane().add(text, BorderLayout.SOUTH);
  71.  
  72. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  73. setSize(375, 400);
  74. }
  75.  
  76. public void addAllCard( DefaultMutableTreeNode suit ) {
  77. suit.add( new DefaultMutableTreeNode( "Ace" ) );
  78. suit.add( new DefaultMutableTreeNode( "Two" ) );
  79. suit.add( new DefaultMutableTreeNode( "Three" ) );
  80. suit.add( new DefaultMutableTreeNode( "Four" ) );
  81. suit.add( new DefaultMutableTreeNode( "Five" ) );
  82. suit.add( new DefaultMutableTreeNode( "Six" ) );
  83. suit.add( new DefaultMutableTreeNode( "Seven" ) );
  84. suit.add( new DefaultMutableTreeNode( "Eight" ) );
  85. suit.add( new DefaultMutableTreeNode( "Nine" ) );
  86. suit.add( new DefaultMutableTreeNode( "Ten" ) );
  87. suit.add( new DefaultMutableTreeNode( "Jack" ) );
  88. suit.add( new DefaultMutableTreeNode( "Queen" ) );
  89. suit.add( new DefaultMutableTreeNode( "King" ) );
  90. }
  91.  
  92. public final DefaultMutableTreeNode findNode(String searchString) {
  93.  
  94. List<DefaultMutableTreeNode> searchNodes = getSearchNodes((DefaultMutableTreeNode)tree.getModel().getRoot());
  95. DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
  96.  
  97. DefaultMutableTreeNode foundNode = null;
  98. int bookmark = -1;
  99.  
  100. if( currentNode != null ) {
  101. for(int index = 0; index < searchNodes.size(); index++) {
  102. if( searchNodes.get(index) == currentNode ) {
  103. bookmark = index;
  104. break;
  105. }
  106. }
  107. }
  108.  
  109. for(int index = bookmark + 1; index < searchNodes.size(); index++) {
  110. if(searchNodes.get(index).toString().toLowerCase().contains(searchString.toLowerCase())) {
  111. foundNode = searchNodes.get(index);
  112. break;
  113. }
  114. }
  115.  
  116. if( foundNode == null ) {
  117. for(int index = 0; index <= bookmark; index++) {
  118. if(searchNodes.get(index).toString().toLowerCase().contains(searchString.toLowerCase())) {
  119. foundNode = searchNodes.get(index);
  120. break;
  121. }
  122. }
  123. }
  124. return foundNode;
  125. }
  126.  
  127. private final List<DefaultMutableTreeNode> getSearchNodes(DefaultMutableTreeNode root) {
  128. List<DefaultMutableTreeNode> searchNodes = new ArrayList<DefaultMutableTreeNode>();
  129.  
  130. Enumeration<?> e = root.preorderEnumeration();
  131. while(e.hasMoreElements()) {
  132. searchNodes.add((DefaultMutableTreeNode)e.nextElement());
  133. }
  134. return searchNodes;
  135. }
  136.  
  137. public static void main(String[] args) {
  138. TreeDemo app = new TreeDemo();
  139. app.setVisible(true);
  140.  
  141.  
  142. }
  143.  
  144.  
  145. public void actionPerformed(ActionEvent e) {
  146. String search = text.getText();
  147. if(search.trim().length() > 0 ) {
  148.  
  149. DefaultMutableTreeNode node = findNode(search);
  150. if( node != null ) {
  151. TreePath path = new TreePath(node.getPath());
  152. tree.setSelectionPath(path);
  153. tree.scrollPathToVisible(path);
  154. }
  155. }
  156. }
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement