### 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币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 5G SRM815模组原理框图.jpg
- T型3电平逆变器,lcl滤波器滤波器参数计算,半导体损耗计算,逆变电感参数设计损耗计算 mathcad格式输出,方便修改 同时支持plecs损耗仿真,基于plecs的闭环仿真,电压外环,电流内环
- 毒舌(解锁版).apk
- 显示HEX、S19、Bin、VBF等其他汽车制造商特定的文件格式
- 操作系统实验 Ucore lab5
- 8bit逐次逼近型SAR ADC电路设计成品 入门时期的第三款sarADC,适合新手学习等 包括电路文件和详细设计文档 smic0.18工艺,单端结构,3.3V供电 整体采样率500k,可实现基
- 操作系统实验 ucorelab4内核线程管理
- 脉冲注入法,持续注入,启动低速运行过程中注入,电感法,ipd,力矩保持,无霍尔无感方案,媲美有霍尔效果 bldc控制器方案,无刷电机 提供源码,原理图
- Matlab Simulink#直驱永磁风电机组并网仿真模型 基于永磁直驱式风机并网仿真模型 采用背靠背双PWM变流器,先整流,再逆变 不仅实现电机侧的有功、无功功率的解耦控制和转速调节,而且能实
- 157389节奏盒子地狱模式第三阶段7.apk