Guest User

Untitled

a guest
Oct 18th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.88 KB | None | 0 0
  1. import java.awt.FlowLayout;
  2. import java.awt.GridLayout;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import java.io.IOException;
  6. import java.util.Enumeration;
  7. import javax.swing.*;
  8. import javax.swing.event.TreeSelectionEvent;
  9. import javax.swing.event.TreeSelectionListener;
  10. import javax.swing.tree.DefaultMutableTreeNode;
  11. import javax.swing.tree.DefaultTreeModel;
  12. import javax.swing.tree.TreeNode;
  13. import javax.swing.tree.TreePath;
  14. import javax.swing.tree.TreeSelectionModel;
  15.  
  16. public class MainFrame extends JFrame implements TreeSelectionListener,
  17.         ActionListener {
  18.     private JTree tree;
  19.     private JTextField info;
  20.     private DefaultMutableTreeNode top;
  21.     private JButton searchBtn;
  22.     private JTextField searchTxt;
  23.     private DefaultTreeModel model;
  24.  
  25.     public MainFrame() throws IOException {
  26.         super("Help System Demo");
  27.         setSize(500, 350);
  28.         setResizable(false);
  29.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  30.         top = new DefaultMutableTreeNode("Index");
  31.         model = new DefaultTreeModel(top);
  32.         addNodes(top);
  33.         tree = new JTree(top);
  34.         tree.getSelectionModel().setSelectionMode(
  35.                 TreeSelectionModel.SINGLE_TREE_SELECTION);
  36.         tree.addTreeSelectionListener(this);
  37.         JScrollPane treeView = new JScrollPane(tree);
  38.         info = new JTextField("Info Demo");
  39.         info.setEditable(false);
  40.         searchTxt = new JTextField("Search Item");
  41.         searchBtn = new JButton("Search");
  42.         searchBtn.addActionListener(this);
  43.         GridLayout grid = new GridLayout(0, 1);
  44.         FlowLayout flow = new FlowLayout();
  45.         JPanel row1 = new JPanel(flow);
  46.         row1.add(searchTxt);
  47.         row1.add(searchBtn);
  48.         add(row1);
  49.         setLayout(grid);
  50.         add(treeView);
  51.         add(info);
  52.         setVisible(true);
  53.     }
  54.  
  55.     private void addNodes(DefaultMutableTreeNode topNode) throws IOException {
  56.         // type is a folder JTree element
  57.         DefaultMutableTreeNode type = null;
  58.         // element is a sub folder JTree element
  59.         DefaultMutableTreeNode element = null;
  60.         type = new DefaultMutableTreeNode("Input");
  61.         topNode.add(type);
  62.  
  63.         element = new DefaultMutableTreeNode(new HelpInfo("InputBasics",
  64.                 "Input"));
  65.         type.add(element); // add sub folder to folder
  66.  
  67.     }
  68.  
  69.     private DefaultMutableTreeNode searchNode(String nodeStr) {
  70.         DefaultMutableTreeNode node = null;
  71.         Enumeration en = top.breadthFirstEnumeration();
  72.  
  73.         // iterate through via the enumeration
  74.         while (en.hasMoreElements()) {
  75.             node = (DefaultMutableTreeNode) en.nextElement();
  76.  
  77.             // match the string with the user-object of the node
  78.             if (nodeStr.equals(node.getUserObject().toString())) {
  79.                 // tree node with string found
  80.                 return node;
  81.             }
  82.         }
  83.  
  84.         // if tree node is not found
  85.         return null;
  86.     }
  87.  
  88.     public static void main(String[] args) throws IOException {
  89.         new MainFrame();
  90.     }
  91.  
  92.     @Override
  93.     public void valueChanged(TreeSelectionEvent arg0) {
  94.         // TODO Auto-generated method stub
  95.         DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree
  96.                 .getLastSelectedPathComponent();
  97.  
  98.         if (node == null)
  99.             // Nothing is selected.
  100.             return;
  101.  
  102.         Object nodeInfo = node.getUserObject();
  103.         if (node.isLeaf()) {
  104.             HelpInfo help = (HelpInfo) nodeInfo;
  105.             info.setText(help.getHelpData());
  106.         }
  107.     }
  108.  
  109.     @Override
  110.     public void actionPerformed(ActionEvent event) {
  111.         Object Source = event.getSource();
  112.         if (Source == searchBtn) {
  113.             DefaultMutableTreeNode node = searchNode(searchTxt.getText());
  114.  
  115.             if (node != null) // i.e.: node is found!
  116.             {
  117.                 // scroll to node if found
  118.                 TreeNode[] nodes = model.getPathToRoot(node);
  119.                 TreePath path = new TreePath(nodes);
  120.                 tree.scrollPathToVisible(path);
  121.                 tree.setSelectionPath(path);
  122.             } else {
  123.                 // if searchTxt.getText() != a node object then show a popup
  124.                 // window
  125.                 JOptionPane.showMessageDialog(this, searchTxt.getText()
  126.                         + " not found", "Node not found",
  127.                         JOptionPane.INFORMATION_MESSAGE);
  128.             }
  129.         }
  130.         String srch = searchTxt.getText();
  131.         searchNode(srch);
  132.     }
  133.  
  134. }
Add Comment
Please, Sign In to add comment