swing表格JTalble添加数据(数据类型实现自定类型,如颜色,组合框等控件)还有实现控件的功能—添加事件

简介: swing表格JTalble添加数据(数据类型实现自定类型,如颜色,组合框等控件)还有实现控件的功能—添加事件

swing表格JTalble添加数据(数据类型实现自定类型,如颜色,组合框等控件)还有实现控件的功能—添加事件


 

  1.总结一下:

  1. 1.   样式的话,通过表格的渲染器改变,而功能的改变(例如添加组合框控件,数据变成组合框选中的—表格编辑器实现)
  2. 2.    想要实现:选中颜色,代表颜色就改变为选中的颜色:添加事件
  3. 3.    对于组合框有点小问题:选中后会调用两次方法,因为组合框有两种状态:选中状态和取消状态,所以事件中需要判断组合框的状态,然后再实现组合框的选中事件,就解决问题啦

 

 2.效果:


23.png


3.实现细节:


24.png


3-2、实例化一个表格:JTable, 实例的时候没有传入参数,想要后边通过mode 来重新设置表格控件的表头和数据。


25.png


(ps:为了有表头的样式,先把表格控件添加到滚动面板里,然后再添加到内容面板。)

 

 

 

3-3. 定义二维数组Object[ ][ ]的数据 和 String[ ] 的表头名称,用来作为参数传入后边的mode表格模式。


26.png


3-4.    通过封装一个方法来设置表格模式,方法里,实例了DefaultTableMode默认的模式,并且把数据和表头名称作为参数传入,然后通过表格的 .setModel(模式对象)来设置表格模式。


27.png


样子:

28.png


(不够完美,所以我们选择了UIManager管理器来设置控件的样式)

 

 

3-5 、  先设置表格和表头中的字体样式:

 

通过UIManger.put(key, value); 把表格字体Table.font / TableHeader.font 作为参数key传入, Font对象作为value传入。

29.png


 3-6.    看一下,如果表格格子太窄了,就设置一下表格的行高像素:

 

通过.setRowHeight(像素);



30.png


3-7

31.png


(不完美,所以我们需要渲染器渲染显示出颜色)

 

3-8、    因为要重写的内容很多,所以外部类啦,外部类继承DefaultTableCellRenderer,然后重写setValue函数,判断如果值value是Color类型则设置为背景颜色。

32.png


3-9、   然后获取表格中我们想要的那一列,给它设置上我们的渲染器(通过.getColumn(“目标列”).setCellRenderer(渲染器对象) )。


33.png


3-10.

34.png

解决:


35.png


 3-11、 渲染器只能渲染,改变外观。想要修改功能,通过.setCellEditor(单元格编辑器)。


36.png


 

3-12、想要实现选择下拉列表框后选中颜色,能够修改颜色---添加事件

 

3-13. 下拉列表框的话有点小问题:就是选完选项,方法会被调用两次。

 

37.png


因为:

38.png


39.png


目录
相关文章
|
JavaScript 前端开发 Java
【vue-router】useRoute 和 useRouter 的区别
【vue-router】useRoute 和 useRouter 的区别
|
Java Apache Maven
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory解决方法
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory解决方法
2015 0
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory解决方法
|
监控 安全 Linux
系统漏洞修复:升级OpenSSH+OpenSSL
系统漏洞修复:升级OpenSSH+OpenSSL
3734 0
Vue3报错:Extraneous non-props attributes (style) were passed to component but could not be automatical
Vue3报错:Extraneous non-props attributes (style) were passed to component but could not be automatical
5295 1
|
9月前
|
人工智能 运维 前端开发
[深度测评] 2026 阿里云开发者选型:通义灵码与主流 AI 编程助手的“双剑合璧”实战指南
在阿里云的云原生生态下,AI 编程助手已成为标配。作为一名在阿里云生态摸爬滚打多年的全栈开发者,我实测了市面上主流的工具。结论是:成年人不做选择,极致的效率往往来自“组合拳”。 本文将从 Web 开发视角,深度解析通义灵码与行业顶尖竞品文心快码 (Comate) 的实战表现。
|
XML JSON 前端开发
HTTP协议,Content-Type格式介绍篇
通过理解和正确使用Content-Type头字段,可以确保数据在网络上传输时的正确性和高效性,提升网络应用的可靠性和用户体验。
1888 18
|
前端开发 JavaScript Java
微服务技术系列教程(08) - SpringBoot - 热部署(IDEA版)
微服务技术系列教程(08) - SpringBoot - 热部署(IDEA版)
1588 0
|
网络协议 Linux 网络安全
遇到Docker容器网络隔断?揭秘六种超级实用解决方案,轻松让Docker容器畅游互联网!
【8月更文挑战第18天】Docker容器内网络不通是开发者常遇问题,可能因网络配置错、Docker服务异常或防火墙阻碍等原因引起。本文提供六种解决策略:确认Docker服务运行状态、重启Docker服务、检查与自定义Docker网络设置、验证宿主机网络连接、临时禁用宿主机IPv6及检查防火墙规则。通过这些步骤,多数网络问题可得以解决,确保容器正常联网。
5898 1
|
API
Vue3组件通信全解析:利用props、emit、provide/inject跨层级传递数据,expose与ref实现父子组件方法调用
Vue3组件通信全解析:利用props、emit、provide/inject跨层级传递数据,expose与ref实现父子组件方法调用
4868 0
|
存储 资源调度 JavaScript
Vue3如何使用Pinia详细介绍、pinia持久化存储(pinia-plugin-persistedstate详细配置)
Vue3如何使用Pinia详细介绍、pinia持久化存储(pinia-plugin-persistedstate详细配置)

热门文章

最新文章