### Java中的JTable常见用法详解 #### 一、创建JTable控件的方式 JTable是Swing框架中用于展示表格数据的一个重要组件。通过不同的构造方法,我们可以根据实际需求灵活地创建表格。 1. **无参数构造**: - **代码示例**:`JTable table = new JTable();` - 这种方式创建的是一个空的表格,不包含任何数据或列定义。通常用于动态加载数据或后期设置模型的情况。 2. **基于数据和表头创建**: - **代码示例**: ```java Object[][] cellData = { {"row1-col1", "row1-col2"}, {"row2-col1", "row2-col2"} }; String[] columnNames = {"col1", "col2"}; JTable table = new JTable(cellData, columnNames); ``` - **解释**:这种方式允许开发者直接传入数据数组和表头数组来初始化表格,非常适合于已有固定数据的情况。 3. **创建不可编辑的表格**: - **代码示例**: ```java String[] headers = {"表头一", "表头二", "表头三"}; Object[][] cellData = null; DefaultTableModel model = new DefaultTableModel(cellData, headers) { @Override public boolean isCellEditable(int row, int column) { return false; } }; JTable table = new JTable(model); ``` - **解释**:通过继承`DefaultTableModel`并重写`isCellEditable`方法,可以设置表格中的所有单元格都不允许编辑。这种方式适用于展示只读数据的情况。 #### 二、对表格列的控制 JTable提供了多种方法来灵活地控制表格列的行为。 1. **设置列宽不可自动调整**: - **代码示例**:`table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);` - **解释**:这将禁止列宽随着容器大小的变化而自动调整。 2. **固定某列的宽度**: - **代码示例**: ```java TableColumn firstColumn = table.getColumnModel().getColumn(0); firstColumn.setPreferredWidth(30); firstColumn.setMaxWidth(30); firstColumn.setMinWidth(30); ``` - **解释**:以上代码设置了第一列的首选宽度、最大宽度和最小宽度均为30像素,从而固定了该列的宽度。 3. **设置当前列数**: - **代码示例**: ```java DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); int count = 5; tableModel.setColumnCount(count); ``` - **解释**:通过获取`DefaultTableModel`对象,并调用`setColumnCount`方法,可以设置当前表格的列数。 4. **获取表格列数**: - **代码示例**:`int cols = table.getColumnCount();` - **解释**:此方法返回表格的总列数。 5. **添加列**: - **代码示例**: ```java DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); tableModel.addColumn("新列名"); ``` - **解释**:通过获取`DefaultTableModel`对象,并调用`addColumn`方法,可以在表格末尾添加新的列。 6. **删除列**: - **代码示例**: ```java table.removeColumn(table.getColumnModel().getColumn(columnIndex)); ``` - **解释**:此方法根据指定的列索引删除对应的列。 #### 三、对表格行的控制 1. **设置行高**: - **代码示例**:`table.setRowHeight(20);` - **解释**:设置每一行的高度为20像素。 2. **设置当前行数**: - **代码示例**: ```java DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); int n = 5; tableModel.setRowCount(n); ``` - **解释**:通过获取`DefaultTableModel`对象,并调用`setRowCount`方法,可以设置当前表格的行数。 3. **获取表格行数**: - **代码示例**:`int rows = table.getRowCount();` - **解释**:此方法返回表格的总行数。 4. **添加表格行**: - **代码示例**: ```java DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); tableModel.addRow(new Object[]{"sitinspring", "35", "Boss"}); ``` - **解释**:通过获取`DefaultTableModel`对象,并调用`addRow`方法,可以在表格末尾添加新的行。 5. **删除表格行**: - **代码示例**: ```java DefaultTableModel model = (DefaultTableModel) table.getModel(); model.removeRow(rowIndex); ``` - **解释**:此方法根据指定的行索引删除对应的行。 #### 四、存取表格单元格的数据 1. **获取单元格数据**: - **代码示例**: ```java DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); String cellValue = (String) tableModel.getValueAt(row, column); ``` - **解释**:通过获取`DefaultTableModel`对象,并调用`getValueAt`方法,可以获取指定行列位置的单元格数据。 2. **填充数据到表格**(示例未完整给出): - **代码示例**(假设Member类已经定义好): ```java public void fillTable(List<Member> members) { DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); for (Member member : members) { tableModel.addRow(new Object[]{member.getName(), member.getAge(), member.getTitle()}); } } ``` - **解释**:此方法遍历`List<Member>`列表,将每个成员对象的信息添加到表格中。这里假设`Member`类有`getName()`、`getAge()`和`getTitle()`等方法。 通过上述介绍,我们可以看到JTable提供了丰富的功能来满足不同场景下的需求,无论是创建表格、控制列和行,还是获取和填充数据,都有相应的API可供使用。这对于开发复杂的桌面应用来说是非常有用的。
- 粉丝: 0
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助