Java Swing - Creating JTree from a Hashtable and listening to selections [Updated: Apr 2, 2018, Created: Feb 15, 2018] |
|
||
Following is a basic Jtree example. We will create our JTree from Hashtable. We will also add Creating JTreepublic class TreeExampleMain { public static void main(String[] args) { Hashtable<?, ?> projectHierarchy = TradingProjectDataService.instance.getProjectHierarchy(); JTree tree = new JTree(projectHierarchy); tree.addTreeSelectionListener(createTreeSelectionListener()); JFrame frame = createFrame(); frame.add(new JScrollPane(tree)); frame.setLocationRelativeTo(null); frame.setVisible(true); } private static TreeSelectionListener createTreeSelectionListener() { return treeSelectionEvent -> { TreePath path = treeSelectionEvent.getPath(); System.out.println("Path: " + path); Object c = path.getLastPathComponent(); DefaultMutableTreeNode node = (DefaultMutableTreeNode) c; System.out.println("User Object: " + node.getUserObject()); System.out.println("---"); }; } private static JFrame createFrame() { JFrame frame = new JFrame("JTree basic example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(new Dimension(500, 400)); return frame; } } Creating Hashtablepublic enum TradingProjectDataService { instance; private final String ROLES[] = {"Project Manager", "Tech Lead", "Developer", "Scrum Master", "Business Analyst"}; private Hashtable<Object, Object> modules = new Hashtable<>(); TradingProjectDataService() { addModule("Trading", "Real Time Trading", "Order System"); addModule("Future/Option", "Option Analyzer", "Market Scanning System"); addModule("Fixed Income", "Bond Tool", "Price/Yield Calculator", "Strategy Evaluator"); } private void addModule(String module, String... projects) { for (String project : projects) { modules.put(module, getProject(module, project)); } } private Object getProject(String module, String project) { Hashtable<Object, Object> projectMap = new Hashtable<>(); projectMap.put(project, getEmployeesForProject(module, project)); return projectMap; } private Object getEmployeesForProject(String module, String project) { //random example employees, in real app we will get it from backend String[] employees = new String[ROLES.length]; for (int i = 0; i < ROLES.length; i++) { employees[i] = RandomUtil.getFullName() + " [" + ROLES[i] + "]"; } return employees; } public Hashtable<?, ?> getProjectHierarchy() { return modules; } } Output![]() On node selection, following output is printed on the console: Path: [root, Future/Option, Market Scanning System, Claudie Martindale [Developer]] User Object: Claudie Martindale [Developer] --- Path: [root, Future/Option, Market Scanning System, Dorinda Hein [Scrum Master]] User Object: Dorinda Hein [Scrum Master] --- Example ProjectDependencies and Technologies Used:
|
|
||
|
|||
|
|||
|