| |
JTree.getModel().addTreeModelListener(new TreeModelListener()) |
|
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.event.TreeModelEvent;
import javax.swing.event.TreeModelListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
public class Main {
public static void main(String args[]) {
JFrame f = new JFrame("JTree Demo");
f.setSize(260, 240);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
DefaultMutableTreeNode aNode = new DefaultMutableTreeNode("A");
root.add(aNode);
DefaultMutableTreeNode bNode = new DefaultMutableTreeNode("B");
aNode.add(bNode);
DefaultMutableTreeNode cNode = new DefaultMutableTreeNode("C");
aNode.add(cNode);
cNode.add(new DefaultMutableTreeNode("D"));
cNode.add(new DefaultMutableTreeNode("E"));
DefaultMutableTreeNode fNode = new DefaultMutableTreeNode("F");
root.add(fNode);
DefaultMutableTreeNode gNode = new DefaultMutableTreeNode("G");
fNode.add(gNode);
fNode.add(new DefaultMutableTreeNode("H"));
gNode.add(new DefaultMutableTreeNode("I"));
JTree jtree = new JTree(root);
jtree.setEditable(true);
TreeSelectionModel tsm = jtree.getSelectionModel();
tsm.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
jtree.addTreeExpansionListener(new TreeExpansionListener() {
public void treeExpanded(TreeExpansionEvent tee) {
TreePath tp = tee.getPath();
System.out.println("Expansion: " + tp.getLastPathComponent());
}
public void treeCollapsed(TreeExpansionEvent tee) {
TreePath tp = tee.getPath();
System.out.println("Collapse: " + tp.getLastPathComponent());
}
});
jtree.addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent tse) {
TreePath tp = tse.getPath();
System.out.println("Selection event: " + tp.getLastPathComponent());
}
});
jtree.getModel().addTreeModelListener(new TreeModelListener() {
public void treeNodesChanged(TreeModelEvent tme) {
TreePath tp = tme.getTreePath();
Object[] children = tme.getChildren();
DefaultMutableTreeNode changedNode;
if (children != null)
changedNode = (DefaultMutableTreeNode) children[0];
else
changedNode = (DefaultMutableTreeNode) tp.getLastPathComponent();
System.out.println("Model change path: " + tp + "New data: "
+ changedNode.getUserObject());
}
public void treeNodesInserted(TreeModelEvent tme) {
}
public void treeNodesRemoved(TreeModelEvent tme) {
}
public void treeStructureChanged(TreeModelEvent tme) {
}
});
f.add(new JScrollPane(jtree));
f.setVisible(true);
}
}
|
|
|
Related examples in the same category |
1. | Creating a JTable Component | | | 2. | Creates tables that allow rows and columns to be added or deleted | | | 3. | Build a table from list data and column names | | | 4. | Getting the Number of Rows and Columns in a JTable Component | | | 5. | Appending a Row to a JTable Component | | | 6. | Add columns to a table through DefaultTableModel | | | 7. | Insert a row to a table through DefaultTableModel | | | 8. | Insert a row to a table through DefaultTableModel at specified row | | | 9. | Scroll Table Sample | | | 10. | Simple demonstration of JTable | | | 11. | Create a table with two dimensional array | | | 12. | Create table with Unicode data | | | 13. | Use Table to display type data(Integer, Boolean, Color) | | | 14. | Resize Table | | | 15. | Expense Table | | | 16. | StockTable 6: Action and Dynamic Display | | | 17. | JTable selection events | | | 18. | A table with the ability to play with row and column selections | | | 19. | Table Selection mode | | | 20. | Use code to change Table Selection | | | 21. | Display ResultSet in Table (JTable) | | | 22. | JTable(Table) with JDBC and ResultSet | | | 23. | ResultSet Table: extends AbstractTable and combine the ResultSet | | | 24. | List UI Properties in a JTable and sortable | | | 25. | Property Table: Use JTable to display and edit properties | | | 26. | Table with tool tips for both cells and column headers | | | 27. | StockTable 4: Table Sorter | | | 28. | Table Sort Test | | | 29. | JTable sorter:click the table header to sort a column and a table | | | 30. | Creating image out of a JTable | | | 31. | JTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); | | | 32. | JTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); | | | 33. | JTable.setColumnSelectionAllowed(boolean b); | | | 34. | JTable.setRowSelectionAllowed(boolean b); | | | 35. | JTable.setCellSelectionEnabled(boolean b); | | | 36. | Handle selection and model change events for a JTable. | | | 37. | ListSelectionModel rowSelMod = JTable.getSelectionModel(); | | | 38. | ListSelectionModel colSelMod = JTable.getColumnModel().getSelectionModel(); | | | 39. | Move the last visible column so it becomes the first visible column | | | 40. | the last column is moved to the first position | | | 41. | Allowing the User to Resize a Column in a JTable Component | | | 42. | Retrieve the value in the visible cell (1,2) in a JTable | | | 43. | Retrieve the value in cell (1,2) from the model | | | 44. | Change a cell in the 2nd visible column | | | 45. | Change a cell in the 3rd column in the model | | | 46. | Showing the Table Header in a Non-Scrollable JTable Component | | | 47. | Changing the Name of a Column in a JTable Component | | | 48. | Displaying an Icon in a Column Head of a JTable Component | | | 49. | Implementing Variable-Height Column Headers in a JTable Component | | | 50. | Removing the Column Headers from a Scrollable in a JTable Component | | | 51. | Creating a Custom Column Header Renderer in a JTable Component | | | 52. | Setting Column Header Tool Tips in a JTable Components | | | 53. | Setting Tool Tips on Cells in a JTable Component | | | 54. | Enable row selection (default) in a JTable | | | 55. | Enable column selection in a JTable | | | 56. | Enable cell selection in a JTable | | | 57. | Get default selection mode:MULTIPLE_INTERVAL_SELECTION | | | 58. | Allow only single a selection | | | 59. | Allow selection to span one contiguous set of rows, visible columns, or block of cells | | | 60. | Allow multiple selections of rows, visible columns, or cell blocks (default) | | | 61. | Select a column - column 0 in a JTable | | | 62. | Select an additional range of columns - columns 1 to 2 | | | 63. | Deselect a range of columns - columns 0 to 1 | | | 64. | Select a row - row 0 | | | 65. | Select an additional range of rows - rows 1 to 2 | | | 66. | Deselect a range of rows - rows 0 to 1 | | | 67. | Select a cell: cell (2,1) | | | 68. | Extend the selection to include all cells (5,3) | | | 69. | Deselect a cell: cell (3,2), All cells in the row and column containing (3,2) are deselected. | | | 70. | Toggles the selection state, if it were called again, it exactly reverses the first call. | | | 71. | Select all cells | | | 72. | Deselect all cells | | | 73. | Column selection is enabled, get the indices of the selected columns | | | 74. | Row selection is enabled, Get the indices of the selected rows | | | 75. | Get selected row and selected index | | | 76. | Get the min and max ranges of selected cells | | | 77. | Check each cell in the min and max ranges of selected cells | | | 78. | Disabling Selections in a JTable Component | | | 79. | Getting the Anchor Cell in a JTable Component | | | 80. | Creating a Scrollable JTable Component | | | 81. | Disable auto resizing to make the table horizontal scrollable | | | 82. | Determining If a Cell Is Visible in a JTable Component | | | 83. | Making a Cell Visible in a JTable Component | | | 84. | Scrolling a Cell to the Center of a JTable Component | | | 85. | Show both horizontal and vertical grid lines (the default) | | | 86. | Don't show any grid lines | | | 87. | Show only vertical grid lines | | | 88. | Show only horizontal grid lines | | | 89. | Set the grid color | | | 90. | Getting the Gap Size Between Cells in a JTable Component | | | 91. | Add 5 spaces to the left and right sides of a cell. | | | 92. | Increase the row height | | | 93. | Programmatically Starting Cell Editing in a JTable Component | | | 94. | Save the current value in the cell being edited and stops the editing process | | | 95. | Discard any changes made by the user and stops the editing process | | | 96. | Disabling User Edits in a JTable | | | 97. | Disabling User Edits in a JTable with DefaultTableModel | | | 98. | Sorting the Rows in a JTable Component Based on a Column | | | 99. | Sorting a Column in a JTable Component | | | 100. | Listening for Selection Events in a JTable Component | | | 101. | Listening for Changes to the Rows and Columns of a JTable Component | | | 102. | Listening for Column-Related Changes in a JTable Component | | | 103. | Listening for Clicks on a Column Header in a JTable Component | | | 104. | Sorting and Filtering Tables | | | 105. | Use a regexFilter to filter table content | | | 106. | Creating a JTable with rows of variable height | | |
|