Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

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;
    }
}