Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.FlowLayout;
- import java.awt.GridLayout;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.io.IOException;
- import java.util.Enumeration;
- import javax.swing.*;
- import javax.swing.event.TreeSelectionEvent;
- import javax.swing.event.TreeSelectionListener;
- import javax.swing.tree.DefaultMutableTreeNode;
- import javax.swing.tree.DefaultTreeModel;
- import javax.swing.tree.TreeNode;
- import javax.swing.tree.TreePath;
- import javax.swing.tree.TreeSelectionModel;
- public class MainFrame extends JFrame implements TreeSelectionListener,
- ActionListener {
- private JTree tree;
- private JTextField info;
- private DefaultMutableTreeNode top;
- private JButton searchBtn;
- private JTextField searchTxt;
- private DefaultTreeModel model;
- public MainFrame() throws IOException {
- super("Help System Demo");
- setSize(500, 350);
- setResizable(false);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- top = new DefaultMutableTreeNode("Index");
- model = new DefaultTreeModel(top);
- addNodes(top);
- tree = new JTree(top);
- tree.getSelectionModel().setSelectionMode(
- TreeSelectionModel.SINGLE_TREE_SELECTION);
- tree.addTreeSelectionListener(this);
- JScrollPane treeView = new JScrollPane(tree);
- info = new JTextField("Info Demo");
- info.setEditable(false);
- searchTxt = new JTextField("Search Item");
- searchBtn = new JButton("Search");
- searchBtn.addActionListener(this);
- GridLayout grid = new GridLayout(0, 1);
- FlowLayout flow = new FlowLayout();
- JPanel row1 = new JPanel(flow);
- row1.add(searchTxt);
- row1.add(searchBtn);
- add(row1);
- setLayout(grid);
- add(treeView);
- add(info);
- setVisible(true);
- }
- private void addNodes(DefaultMutableTreeNode topNode) throws IOException {
- // type is a folder JTree element
- DefaultMutableTreeNode type = null;
- // element is a sub folder JTree element
- DefaultMutableTreeNode element = null;
- type = new DefaultMutableTreeNode("Input");
- topNode.add(type);
- element = new DefaultMutableTreeNode(new HelpInfo("InputBasics",
- "Input"));
- type.add(element); // add sub folder to folder
- }
- private DefaultMutableTreeNode searchNode(String nodeStr) {
- DefaultMutableTreeNode node = null;
- Enumeration en = top.breadthFirstEnumeration();
- // iterate through via the enumeration
- while (en.hasMoreElements()) {
- node = (DefaultMutableTreeNode) en.nextElement();
- // match the string with the user-object of the node
- if (nodeStr.equals(node.getUserObject().toString())) {
- // tree node with string found
- return node;
- }
- }
- // if tree node is not found
- return null;
- }
- public static void main(String[] args) throws IOException {
- new MainFrame();
- }
- @Override
- public void valueChanged(TreeSelectionEvent arg0) {
- // TODO Auto-generated method stub
- DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree
- .getLastSelectedPathComponent();
- if (node == null)
- // Nothing is selected.
- return;
- Object nodeInfo = node.getUserObject();
- if (node.isLeaf()) {
- HelpInfo help = (HelpInfo) nodeInfo;
- info.setText(help.getHelpData());
- }
- }
- @Override
- public void actionPerformed(ActionEvent event) {
- Object Source = event.getSource();
- if (Source == searchBtn) {
- DefaultMutableTreeNode node = searchNode(searchTxt.getText());
- if (node != null) // i.e.: node is found!
- {
- // scroll to node if found
- TreeNode[] nodes = model.getPathToRoot(node);
- TreePath path = new TreePath(nodes);
- tree.scrollPathToVisible(path);
- tree.setSelectionPath(path);
- } else {
- // if searchTxt.getText() != a node object then show a popup
- // window
- JOptionPane.showMessageDialog(this, searchTxt.getText()
- + " not found", "Node not found",
- JOptionPane.INFORMATION_MESSAGE);
- }
- }
- String srch = searchTxt.getText();
- searchNode(srch);
- }
- }
Add Comment
Please, Sign In to add comment