Java tutorial
import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; public class Main extends JPanel { JTree tree; DefaultTreeModel model; JButton btnAdd = new JButton("Add"); int childCount; public Main() { super(new BorderLayout()); DefaultMutableTreeNode top = new DefaultMutableTreeNode("The Java Series"); createNodes(top); model = new DefaultTreeModel(top); tree = new JTree(model); tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); JScrollPane treeView = new JScrollPane(tree); add(treeView); btnAdd.addActionListener(e -> { TreePath treePath = tree.getSelectionPath(); if (treePath != null) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) treePath.getLastPathComponent(); DefaultMutableTreeNode child = new DefaultMutableTreeNode("Child " + (++childCount)); model.insertNodeInto(child, node, node.getChildCount()); } }); add(btnAdd, BorderLayout.SOUTH); } private void createNodes(DefaultMutableTreeNode top) { DefaultMutableTreeNode category = null; DefaultMutableTreeNode book = null; category = new DefaultMutableTreeNode("Books for Java Programmers"); top.add(category); book = new DefaultMutableTreeNode(new BookInfo("Java Tutorial")); category.add(book); book = new DefaultMutableTreeNode(new BookInfo("JDK")); category.add(book); book = new DefaultMutableTreeNode(new BookInfo("GUI")); category.add(book); book = new DefaultMutableTreeNode(new BookInfo("Guide")); category.add(book); book = new DefaultMutableTreeNode(new BookInfo("Language")); category.add(book); book = new DefaultMutableTreeNode(new BookInfo("SQL")); category.add(book); category = new DefaultMutableTreeNode("CSS"); top.add(category); book = new DefaultMutableTreeNode(new BookInfo("Spec")); category.add(book); book = new DefaultMutableTreeNode(new BookInfo("Javascript")); category.add(book); } public static void main(String[] args) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new Main()); frame.pack(); frame.setVisible(true); } } class BookInfo { public String bookName; public BookInfo(String book) { bookName = book; } public String toString() { return bookName; } }