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.border.EmptyBorder;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
public class Main extends JFrame {
MyTreeModel jarFilesDB;
JTree jtree;
boolean isAlpha = false;
JPanel contentPane = new JPanel();
public static void main(String[] args) {
Main frame = new Main();
frame.setVisible(true);
}
public Main() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JButton btnNewButton = new JButton("Click Me");
btnNewButton.addActionListener(e -> doClick());
contentPane.add(btnNewButton, BorderLayout.NORTH);
jarFilesDB = new MyTreeModel();
jarFilesDB.load(isAlpha);
isAlpha = !isAlpha;
jtree = new JTree(jarFilesDB);
JScrollPane scrollPane = new JScrollPane(jtree);
contentPane.add(scrollPane, BorderLayout.CENTER);
}
private void doClick() {
jarFilesDB.load(isAlpha);
isAlpha = !isAlpha;
}
}
class MyTreeModel extends DefaultTreeModel {
DefaultMutableTreeNode rootNode = null;
public MyTreeModel() {
super(new DefaultMutableTreeNode("root"));
rootNode = (DefaultMutableTreeNode) getRoot();
}
public void load(boolean isAlpha) {
rootNode.removeAllChildren();
String[] values;
if (isAlpha)
values = new String[] { "A", "A1", "A2", "B", "B1", "B2" };
else
values = new String[] { "10", "11", "12", "20", "21", "22" };
DefaultMutableTreeNode childNode = new DefaultMutableTreeNode(values[0]);
DefaultMutableTreeNode leafNode = new DefaultMutableTreeNode(values[1]);
childNode.add(leafNode);
leafNode = new DefaultMutableTreeNode(values[2]);
childNode.add(leafNode);
rootNode.add(childNode);
childNode = new DefaultMutableTreeNode(values[3]);
leafNode = new DefaultMutableTreeNode(values[4]);
childNode.add(leafNode);
leafNode = new DefaultMutableTreeNode(values[5]);
childNode.add(leafNode);
rootNode.add(childNode);
nodeStructureChanged(rootNode);
}
public TreeNode getRootNode() {
return rootNode;
}
}