问题描述
主要通过“元件名”和“生产厂家”2个内容来查询数据库并显示结果部分代码如下:Objecta[][];Objectcolname[]={"元件名","生产厂家"};.....a=newObject[30][2];table=newJTable(a,colname);......if(eb.getSource()==b_enter){try{inti=0;sqll=sql.connect();a1="'"+"%"+t_name.getText().trim()+"%"+"'";//t_name为“元件名”文本框a2="'"+"%"+t_company.getText().trim()+"%"+"'";//t_company为“生产厂家”文本框Stringtemp="select*fromFFwhere元件名like"+a1+"and元件厂家like"+a2;rs=sqll.executeQuery(temp);for(intn=0;n<2;n++){a[i][n]=rs.getString(n+2);}i++;p_bar.setValue(i);p_bar.setString("查询了"+i+"条记录");......整个代码测试并读取数据库内容都没问题。。假设我的table为:tableFF:元件名生产厂家aabbaabbaabbccddeeff........现在问题主要出在数组a的显示问题上了,主要有2个大问题:1.当输入的a1=aa,a2=bb时,提示我查询到3条记录,但是a[30][2]这个表格并不显示出数据,只有用鼠标点击该表格内容框时才显示出来(用鼠标点a[0][0]表格位置时,就显示出aabb,要是接着点a[3][0]则显示完3条记录),不知道是不是table需要刷新?若需要的话怎么刷新?2.在1的基础上,若再次输入a1=cc,a2=dd时(1的问题依然存在,就是表内无法立即刷新出查询到的记录),提示找到1条记录。但最终结果为:ccddaabbaabb就是第一条记录更新了,但之前查询时遗留下来的2-3条记录依然存在,不知道该如何在每次按下b_enter键时都更新一遍数组a。我希望第二次查询的结果为:ccdd把之前的查询到的记录删除掉。这2个问题我从早上弄到现在,,,一直找不到解决的办法。。特来不耻下问。。希望大家帮忙下、
解决方案
解决方案二:
使用List<List<Object>>比二维数组方便一些。
解决方案三:
JTable的刷新很好做,无非就是增加删除行。第二个问题的原因应该是数组或者JTable的model没出去原来的记录而直接加薪记录了。btw,最后用的那个“不耻下问”,太油菜了。
解决方案四:
那个成语没别的意思阿,,刚刚看了下成语意思,,发现和我想表达的意思颠倒了0.0别人都说有问题先问百度,解决不了再来BBS请高手,我现在就是第二种境界了。言归正传。。。第一个问题解决了。。。就是最后调用个table.updateUI();看来自己没学好的缘故--!现在还在努力思索怎么解决第二个烦恼,,大家赐教下#14