当前位置: 首页 > news >正文

Java Swing 在JTable里增加动态数据的下拉框

http://www.gbsou.com/2011/01/07/3400.htmlJava Swing 在JTable里增加动态数据的下拉框

首 先我得申明下。这个在jtable中增加下拉框的代码源自于网文,但是他增加的数据是写死的,并不使用于动态的生成,网上也基本上没这个技巧的介 绍。经过2天的努力我终于做出来了,在此分享下,本文随便转载,Java本来就是开源的,不喜欢网上那种不让转载还唧唧歪歪的,但是请尊重我的劳动成果。 在转载本文时保留我的连接:http://www.ij2ee.com/2011/01/07/java-swing-在jtable里增加动态数据的下拉框.html

下面代码是我在网络上的代码上的修改。我会给出思路,修改只是把拥有一个一个字符串数组构造函数改写成了使用Vector,处于对字符串数组不易于自动增加大小,设置小了会造成数组越界异常,设置太大,倒是jtable上会出现大量的空白行。

——————————————————–
首先我们要继承JComboBox和DefaultCellEditor

代码
1 class MyComboBoxEditor extends DefaultCellEditor{
2 public MyComboBoxEditor(Vector < String > items){
3 super ( new MyCombox(items));
4 }
5 }
6
7 class MyCombox extends JComboBox{
8 public MyCombox(Vector <?> items){
9 super (items);
10 }
11
12 }

改写他们的目的是为了能给jtable的单元格增加下拉框。 其实没有MyCombox,的必要,直接new JCombox 就可以了 但是我的想法是改写jcombox 这里就不列出我的部分代码了。而且那也不是本文的重点。

————————————————-

第二 当上面的DefaultCellEditor 被改写好后 我们就可以把他赋给jtable的一个单元格了,这里为了后面的方便 我们讲继承jtable。

代码
1 class MyTable extends JTable{
2
3
4 public MyTable(){
5 super ();
6 // TODOAuto-generatedconstructorstub
7 }
8 int myRow =- 1 ,myCol =- 1 ;
9 TableCellEditormyEditor;
10 public void setComboCell( int r, int c,TableCellEditorce){
11 this .myRow = r;
12 this .myCol = c;
13 // 这里将引用我们前面定义的cellEditor
14 this .myEditor = ce;
15
16 }
17
18 @Override
19 public TableCellEditorgetCellEditor( int row, int column){
20 if (row == myRow && column == myCol && myEditor != null )
21 return myEditor;
22 return super .getCellEditor(row,column);
23 }
24
25 }

———————————————–

第三 当上面的准备都做好时 就方便了。下面我们该准备数据了。

这里所要提到的是 我们的替换数据将存放在一个

private Map < String,Vector < String >> insteadMap = new HashMap < String,Vector < String >> ();

里。

这里的map的 Vector<String> 就是我们要替换下拉的数据。 key是查询条件。

比如我们有数据

A –> a1,a2,a3,a4,a5

B –> b1,b2,b3,b4

在table的初始化中的单元格数据将显示A,当点击A的时候将会去上面的insteadMap中寻找替代数据Vector,并引用第二步中的方法去替换当前单元格

————————————————–

第四步 最终调用方法

代码
Vector < String > s = insteadMap.get(vl + "" ); // 这里的vl就相当于第三步中的AB
if (s == null || s.isEmpty()){
return ;
}

// 下面的方法三个参数是(要替换成下拉框单元格的行,列,及我们的Editor)
dataTable.setComboCell(t.getSelectedRow(), 2 , new MyComboBoxEditor(insteadMap.get(vl.toString())));

这里要注意的是dataTable是用的我们第二步中自定义的JTable

private MyTabledataTable = dataTable = new MyTable();

好了本文完成。好累啊。记得转载保留本文住处:http://www.ij2ee.com/2011/01/07/java-swing-在jtable里增加动态数据的下拉框.html

固定链接: Java Swing 在JTable里增加动态数据的下拉框 | 爱J2EE +复制链接

相关文章:

  • JavaScript常用函数总结
  • Mybatis Collection查询集合只出现一条数据
  • Navicat For MySql 9.1
  • codevs1297 硬币
  • 好久没更新了
  • Echarts中graph类型的运用求教
  • haproxy 配置
  • iOS-绘图(Quartz2D)的简单使用(原创)
  • TCC89x的内存分布区域设置
  • spring bean的scope
  • J-Link的RTT功能实践
  • MVVM for silverlight
  • sort()的多种用法
  • 产品生产环节的一些名词
  • 生活随笔-为知笔记发布博客到博客园
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 2017前端实习生面试总结
  • CAP理论的例子讲解
  • exports和module.exports
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • java取消线程实例
  • leetcode-27. Remove Element
  • nodejs调试方法
  • quasar-framework cnodejs社区
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Sublime Text 2/3 绑定Eclipse快捷键
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 高性能JavaScript阅读简记(三)
  • 和 || 运算
  • 看域名解析域名安全对SEO的影响
  • 普通函数和构造函数的区别
  • 算法---两个栈实现一个队列
  • 小程序开发中的那些坑
  • ​马来语翻译中文去哪比较好?
  • ​用户画像从0到100的构建思路
  • #微信小程序(布局、渲染层基础知识)
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (1)虚拟机的安装与使用,linux系统安装
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (C++20) consteval立即函数
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (二)Linux——Linux常用指令
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (顺序)容器的好伴侣 --- 容器适配器
  • *Django中的Ajax 纯js的书写样式1
  • .net mvc部分视图
  • .NET Remoting学习笔记(三)信道
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NET大文件上传知识整理
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • [ C++ ] 继承