java图形界面_Java自学-图形界面 表格

Swing 使用 JTable详解

示例 1 : 基本表格

显示一个Table需要两组数据

1. 一维数组: String[]columnNames 表示表格的标题

2. 二维数组: String[][] heros 表格中的内容

默认情况下,表格的标题是不会显示出来了,除非使用了JScrollPane

703ccc6d616f41a9cba945c0e388b118.png
package 

示例 2 : JScrollPane

JScrollPane: 带滚动条的Panel

把table放进去就可以看到table的title

同样的把textarea放进去,并且textarea内容够长的话,就会看到滚动条

9c07d98e8cf13d3d0c8768b6dced1f92.png
package 

示例 3 : 列宽

设置列宽度

a2d3665acd3d49b7aff8db2e5607915d.png
package 

示例 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) ,把返回值拿到并显示

package 

.

package 

示例 5 : 进一步理解TableModel

在使用TableModel之前,是使用

String[] columnNames =。。。

String[][] heros = 。。。

JTable t = new JTable(heros, columnNames);

这样的风格创建一个JTable的

所以实际上调用的是如下的构造方法:

JTable(Object[][] rowData, Object[] columnNames)

如图所示,在JTable的的源代码中,它就会根据rowData和columnNames去创建一个TableModel对象

4349a7cf4d3274cbd44c37dc442f0f20.png

示例 6 : TableModel 与DAO结合

通过TableModel与DAO结合显示数据库中Hero信息。

DAO使用HeroDAO 在TableModel中,使用从DAO返回的List作为TableModel的数据

只需要修改HeroTableModel,无需修改TestGUI。 这正好演绎了Model设计思想中的数据分离的好处,当只需要数据发生变化的时候,修改Model即可,界面GUI部分,不需要做任何改动

0c632618e1ad38b1eeb87b1c8ea18e3e.png
package 

示例 7 : TableSelectionModel

通过table可以获取一个 TableSelectionModel,专门用于监听jtable选中项的变化

987d8c553c283245b1719268ff2e2803.png
package 

示例 8 : 更新Table

以新增数据到数据库中,然后更新Table为例

1d3d570f7d2496317c8b1315872151ec.png
package 

示例 9 : 输入项验证

如果用户输入的名称为空,或者血量不是小数,在提交数据的时候都会报错。

“感觉上” 界面就卡住了。 这是不友好的人机交互行为。

所以需要加上输入项的验证,如果输入的数据不合格,应该弹出对话框提示用户具体原因。

63cfc946ce18d153c6ca63c9b9e77be0.png
package 

示例 10 : 选中指定行

  1. table初始化后,应该默认选中第一行
  2. 增加数据后,也应该选中新增的这一条

33ad9c23bcad210ee175b6ae17c883d3.png
package 

更多内容,点击了解: Swing 使用 JTable详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值