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 // TODO Auto-generated constructor stub
7 }
8 int myRow=-1,myCol=-1;
9 TableCellEditor myEditor;
10 public void setComboCell(int r,int c,TableCellEditor ce){
11 this.myRow=r;
12 this.myCol=c;
13 //这里将引用我们前面定义的cellEditor
14 this.myEditor=ce;
15
16 }
17
18 @Override
19 public TableCellEditor getCellEditor(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就相当于第三步中的 A B
if(s == null||s.isEmpty()){
return;
}
//下面的方法三个参数是(要替换成下拉框单元格的行,列,及我们的Editor)
dataTable.setComboCell(t.getSelectedRow(), 2, new MyComboBoxEditor(insteadMap.get(vl.toString())));
这里要注意的是 dataTable是用的我们第二步中自定义的JTable
private MyTable dataTable = dataTable = new MyTable();
好了本文完成。好累啊。记得转载保留本文住处:http://www.ij2ee.com/2011/01/07/java-swing-在jtable里增加动态数据的下拉框.html
固定链接: Java Swing 在JTable里增加动态数据的下拉框 | 爱J2EE +复制链接
分享到:
相关推荐
JTable实现下拉动态加载数据,滑动动态加载数据,纯原生态java。
java swing 导出Jtable里面的数据到excel,不用拷贝代码,直接粘贴代码
主要介绍了Java Swing实现JTable检测单元格数据变更事件的方法,结合完整实例形式分析了Swing实现JTable检测单元格数据变更事件过程中出现的问题与相关解决方法,需要的朋友可以参考下
Java Swing JTable分页!JAVA源码!
用 JavaBean 动态向 JTable 中添加数据,将数据信息保存到 Sql Server 数据库中,在到 JTable 中显示。
在java swing的开发中,需要往表格添加自定义对象,往往需要转换。此类定义了抽象类,运用了范型技术。只需继承时传入对象类型,既可以操作对象表格Model。 作者(HuaSheng) 如有不足,欢迎给我email:sheng24@vip....
java取出mysql中数据,显示在jtable里面
文件主要内容是Java Swing中JTable的常用功能的应用
Swing之JTable详解 类层次结构图: java.lang.Object --java.awt.Component --java.awt.Container --javax.swing.JComponent --javax.swing.JTabel
JTabel的一些方法,表格的设置,按钮的添加,界面的布局,只是一些简单的小玩意
swing 中JTABLE中添加控件的例子 可以引申出添加很多控件
JTable是Swing库提供的一个表格组件。它可以在图形界面中创建一个二维表格,用于展示和编辑数据。
Swing之JTable用法
Swing之JTable的详细介绍,其基本用法及源码例子
JTable动态刷新数据JTable动态刷新数据JTable动态刷新数据JTable动态刷新数据
Java SE程序 把Jtable中的数据导出到Excel中Java SE程序 把Jtable中的数据导出到Excel中Java SE程序 把Jtable中的数据导出到Excel中Java SE程序 把Jtable中的数据导出到Excel中Java SE程序 把Jtable中的数据导出到...
用Java Swing Jtable做的日历
Java Swing的三个比较重要的组件,菜单组件,JTable组件,JTree组件,写了简单的测试例子,供大家参考
Java的Jtable、从数据库取数据显示在表格中