View Javadoc
1   package edu.jiangxin.apktoobox.swing.treetable;
2   
3   import edu.jiangxin.apktoolbox.swing.treetable.MyAbstractTreeTableModel;
4   import edu.jiangxin.apktoolbox.swing.treetable.MyTreeTable;
5   
6   import java.awt.Container;
7   import java.awt.GridLayout;
8   import java.io.Serial;
9   import java.util.ArrayList;
10  import java.util.Date;
11  import java.util.List;
12  
13  import javax.swing.JFrame;
14  import javax.swing.JScrollPane;
15  import javax.swing.SwingUtilities;
16  import javax.swing.UIManager;
17  
18  // see http://www.hameister.org/JavaSwingTreeTable.html for details
19  public class TreeTableMain extends JFrame {
20      @Serial
21      private static final long serialVersionUID = 1L;
22  
23      public TreeTableMain() {
24          super("Tree Table Demo");
25      }
26  
27      // in case of escape of "this"
28      public void initialize() {
29          setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
30  
31          setLayout(new GridLayout(0, 1));
32  
33          MyAbstractTreeTableModel treeTableModel = new MyDataModel(createDataStructure());
34  
35          MyTreeTable myTreeTable = new MyTreeTable();
36          myTreeTable.initialize(treeTableModel);
37  
38          Container cPane = getContentPane();
39  
40          cPane.add(new JScrollPane(myTreeTable));
41  
42          setSize(1000, 800);
43          setLocationRelativeTo(null);
44      }
45  
46  
47      private static MyDataNode createDataStructure() {
48          List<MyDataNode> children1 = new ArrayList<MyDataNode>();
49          children1.add(new MyDataNode("N12", "C12", new Date(), Integer.valueOf(50), null));
50          children1.add(new MyDataNode("N13", "C13", new Date(), Integer.valueOf(60), null));
51          children1.add(new MyDataNode("N14", "C14", new Date(), Integer.valueOf(70), null));
52          children1.add(new MyDataNode("N15", "C15", new Date(), Integer.valueOf(80), null));
53  
54          List<MyDataNode> children2 = new ArrayList<MyDataNode>();
55          children2.add(new MyDataNode("N12", "C12", new Date(), Integer.valueOf(10), null));
56          children2.add(new MyDataNode("N13", "C13", new Date(), Integer.valueOf(20), children1));
57          children2.add(new MyDataNode("N14", "C14", new Date(), Integer.valueOf(30), null));
58          children2.add(new MyDataNode("N15", "C15", new Date(), Integer.valueOf(40), null));
59  
60          List<MyDataNode> rootNodes = new ArrayList<MyDataNode>();
61          rootNodes.add(new MyDataNode("N1", "C1", new Date(), Integer.valueOf(10), children2));
62          rootNodes.add(new MyDataNode("N2", "C2", new Date(), Integer.valueOf(10), children1));
63          rootNodes.add(new MyDataNode("N3", "C3", new Date(), Integer.valueOf(10), children2));
64          rootNodes.add(new MyDataNode("N4", "C4", new Date(), Integer.valueOf(10), children1));
65          rootNodes.add(new MyDataNode("N5", "C5", new Date(), Integer.valueOf(10), children1));
66          rootNodes.add(new MyDataNode("N6", "C6", new Date(), Integer.valueOf(10), children1));
67          rootNodes.add(new MyDataNode("N7", "C7", new Date(), Integer.valueOf(10), children1));
68          rootNodes.add(new MyDataNode("N8", "C8", new Date(), Integer.valueOf(10), children1));
69          rootNodes.add(new MyDataNode("N9", "C9", new Date(), Integer.valueOf(10), children1));
70          rootNodes.add(new MyDataNode("N10", "C10", new Date(), Integer.valueOf(10), children1));
71          rootNodes.add(new MyDataNode("N11", "C11", new Date(), Integer.valueOf(10), children1));
72          rootNodes.add(new MyDataNode("N12", "C7", new Date(), Integer.valueOf(10), children1));
73          rootNodes.add(new MyDataNode("N13", "C8", new Date(), Integer.valueOf(10), children1));
74          rootNodes.add(new MyDataNode("N14", "C9", new Date(), Integer.valueOf(10), children1));
75          rootNodes.add(new MyDataNode("N15", "C10", new Date(), Integer.valueOf(10), children1));
76          rootNodes.add(new MyDataNode("N16", "C11", new Date(), Integer.valueOf(10), children1));
77          MyDataNode root = new MyDataNode("R1", "R1", new Date(), Integer.valueOf(10), rootNodes);
78  
79          return root;
80      }
81  
82      public static void main(final String[] args) {
83          Runnable gui = new Runnable() {
84  
85              public void run() {
86                  try {
87                      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
88                  } catch (Exception e) {
89                      e.printStackTrace();
90                  }
91                  TreeTableMain treeTableMain = new TreeTableMain();
92                  treeTableMain.initialize();
93                  treeTableMain.setVisible(true);
94              }
95          };
96          SwingUtilities.invokeLater(gui);
97      }
98  }