本教程提供Java Swing框架下JTable与JTree组件的具体应用实例,涵盖表格及树形结构数据展示的方法、属性配置以及事件处理技巧。
在Java Swing中,`JTable` 和 `JTree` 是两个重要的组件,它们分别用于展示数据的表格形式和树形结构。下面将详细介绍这两个组件的基本概念、常用方法以及实例。
### `JTable` 组件
`JTable`是 Java Swing GUI 库中的一个组件,它允许开发者在窗口中展示二维数据,并提供了丰富的功能,如排序、选择、编辑等。以下是对 `JTable` 的深入讲解:
1. **基本概念**:
- `JTable` 是基于模型-视图-控制器(MVC)设计模式的,其中数据存储在 `TableModel` 中,`JTable` 作为视图负责渲染数据。
- 它用于展示结构化的数据,例如数据库中的记录或任何其他需要以行列形式展示的数据。
2. **常用构造方法**:
- `JTable()`:创建一个空表格,使用系统默认的模型。
- `JTable(int numRows, int numColumns)`:创建指定行数和列数的空表格。
- `JTable(Object[][] rowData, Object[][] columnNames)`:使用给定的行数据和列名创建表格。
- `JTable(TableModel dm)`:根据指定的 `TableModel` 创建表格。
3. **常用方法**:
- `setModel(TableModel model)`:设置表格的数据模型。
- `getValueAt(int row, int col)`:获取指定单元格的值。
- `setValueAt(Object value, int row, int col)`:设置指定单元格的值。
- `addColumn(Object columnIdentifer)`:向表格添加新列。
- `getRowCount()` 和 `getColumnCount()`:获取行数和列数。
- `isCellEditable(int row, int col)`:检查单元格是否可编辑。
4. **综合案例**:
示例代码1展示了如何创建一个带有默认数据的`JTable`。定义列名和数据,然后创建`DefaultTableModel`,并将其传递给`JTable`构造函数。接着,将 `JTable` 添加到滚动条面板 `JScrollPane` 中,以便实现滚动功能。设置窗口的基本属性,如大小、位置和关闭操作。
### `JTree` 组件
`JTree` 是另一种 Swing 组件,用于显示层次结构的数据,例如文件系统目录结构。其主要特点包括节点展开折叠、选择和监听事件。
1. **基本概念**:
- `JTree` 同样遵循 MVC 设计模式,数据存储在 `TreeModel` 中,`JTree` 作为视图显示树结构。
- 支持节点的展开和折叠,以及自定义图标和展开状态。
2. **常用方法**:
- `setModel(TreeModel model)`:设置 `JTree` 的数据模型。
- `addTreeSelectionListener(TreeSelectionListener l)`:添加树选择监听器,当用户选择节点时触发事件。
- `expandRow(int row)` 和 `collapseRow(int row)`:展开或折叠指定行的节点。
- `getSelectionPath()`:获取当前选中的路径。
3. **综合案例**:
示例代码2未给出,但通常会涉及创建`DefaultTreeModel`,加载根节点,然后通过`addNode()`方法添加子节点。之后,将 `TreeModel` 设置到 `JTree` 中,并可能添加一些事件监听器来处理用户的交互。
结合 `JTable` 和 `JTree`, 开发者可以在 GUI 应用程序中创建复杂的数据展示和交互界面。通过自定义 `TableModel` 和 `TreeModel`, 可以适应各种数据结构,实现动态更新和定制化功能。