图形界面系列教材 (十)- Swing 使用 JTable详解
步骤1:基本表格
步骤2:JScrollPane
步骤3:列宽
步骤4:TableModel
步骤5:进一步理解TableModel
步骤6:TableModel 与DAO结合
步骤7:TableSelectionModel
步骤8:更新Table
步骤9:输入项验证
步骤10:选中指定行
示例 1 : 基本表格
显示一个Table需要两组数据
1. 一维数组: String[]columnNames 表示表格的标题
2. 二维数组: String[][] heros 表格中的内容
默认情况下,表格的标题是不会显示出来了,除非使用了JScrollPane
|
示例 2 : JScrollPane
JScrollPane: 带滚动条的Panel
把table放进去就可以看到table的title
同样的把textarea放进去,并且textarea内容够长的话,就会看到滚动条
|
示例 3 : 列宽
设置列宽度
|
示例 4 : TableModel
首先说下TableModel的设计思想,在Model这种思想的指导下,数据和显示分离开来了。 比如对于JTable而言,有数据部分,也有显示部分(比如列宽等信息)。 数据部分,专门做一个类,叫做TableModel,就用于存放要显示的数据。
使用TableModel的方式存放Table需要显示的数据
HeroTableModel 继承AbstractTableModel ,进而实现了接口TableModel
在HeroTableModel 中提供一个table显示需要的所有信息
1. getRowCount 返回一共有多少行
2. getColumnCount 返回一共有多少列
3. getColumnName 每一列的名字
4. isCellEditable 单元格是否可以修改
5. getValueAt 每一个单元格里的值
当图形界面需要渲染第一个单元格的数据的时候,就会调用方法TabelModel的getValueAt(0,0) ,把返回值拿到并显示
|
|
示例 5 : 进一步理解TableModel
在使用TableModel之前,是使用
|
这样的风格创建一个JTable的
所以实际上调用的是如下的构造方法:
|
如图所示,在JTable的的源代码中,它就会根据rowData和columnNames去创建一个TableModel对象
示例 6 : TableModel 与DAO结合
通过TableModel与DAO结合显示数据库中Hero信息。
DAO使用HeroDAO
在TableModel中,使用从DAO返回的List作为TableModel的数据
只需要修改HeroTableModel,无需修改TestGUI。 这正好演绎了Model设计思想中的数据分离的好处,当只需要数据发生变化的时候,修改Model即可,界面GUI部分,不需要做任何改动
|
示例 7 : TableSelectionModel
通过table可以获取一个 TableSelectionModel,专门用于监听jtable选中项的变化
|
示例 8 : 更新Table
以新增数据到数据库中,然后更新Table为例
|
示例 9 : 输入项验证
如果用户输入的名称为空,或者血量不是小数,在提交数据的时候都会报错。
“感觉上” 界面就卡住了。 这是不友好的人机交互行为。
所以需要加上输入项的验证,如果输入的数据不合格,应该弹出对话框提示用户具体原因。
|
示例 10 : 选中指定行
1. table初始化后,应该默认选中第一行
2. 增加数据后,也应该选中新增的这一条
|
更多内容,点击了解: https://how2j.cn/k/gui/gui-table/410.html