| 发表于:2007-01-10 21:20:27 楼主 |
我想实现的功能是:从表单接收数据,然后调用jtable浏览刚才表单的内容,而jtable的构造方法中有一种是new jtable(object[][] o1,object[] o2),第一个参数是二维数组,用来存记录,第二个是一维数组,用来存字段,表单里的数据是不断填加的,所以二维数组应该是动态的,我用下面这个例子实现了动态二维数组,不过感觉麻烦,请高手指点在线恭候答案,谢谢!!此程序编译正常, "填加 "按钮正常,而 "浏览 "按钮就出错,怎么回事呢? import java.awt.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class sunrg extends jframe implements actionlistener { jtable jt; string[] tablehead={ "姓名 ", "电话 ", "年龄 "}; object [][] recorder; jbutton jb1; jbutton jb2; jbutton jb3; jtextfield[] jtf=new jtextfield[3]; vector v; vector v1; jpanel jp; public sunrg() { //final jframe f=this; //v1=new vector(); //v1.addelement((jframe)f); v=new vector(); setsize(300,300); setdefaultcloseoperation(jframe.exit_on_close); container cp=getcontentpane(); cp.setlayout(null); //cp.setbounds(new rectangle(100,100,300,300)); jp=new jpanel(); jp.setlayout(null); jp.setbounds(new rectangle(50,50,500,500)); jlabel jl=new jlabel( "信息采集表 "); jl.setbounds(new rectangle(90,20,100,50)); jlabel jl1=new jlabel( "姓名 "); jl1.setbounds(new rectangle(60,60,25,15)); jtf[0]=new jtextfield( " "); jtf[0].setbounds(new rectangle(86,60,100,15)); jlabel jl2=new jlabel( "电话 "); jl2.setbounds(new rectangle(60,80,25,15)); jtf[1]=new jtextfield( " "); jtf[1].setbounds(new rectangle(86,80,100,15)); jlabel jl3=new jlabel( "年龄 "); jl3.setbounds(new rectangle(60,100,25,15)); jtf[2]=new jtextfield( " "); jtf[2].setbounds(new rectangle(86,100,100,15)); jb1=new jbutton( "填加 "); jb1.setbounds(new rectangle(40,125,60,25)); jb2=new jbutton( "浏览 "); jb2.setbounds(new rectangle(110,125,60,25)); jb3=new jbutton( "删除 "); jb3.setbounds(new rectangle(180,125,60,25)); jp.add(jl); jp.add(jl1); jp.add(jtf[0]); jp.add(jl2); jp.add(jtf[1]); jp.add(jl3); jp.add(jtf[2]); jp.add(jb1); jp.add(jb2); jp.add(jb3); cp.add(jp); //jtf1.addactionlistener(this); //jtf2.addactionlistener(this); //jtf3.addactionlistener(this); jb1.addactionlistener(this); jb2.addactionlistener(this); jb3.addactionlistener(this); show(); } public void actionperformed(actionevent ae) { if(ae.getsource()==jb1) { for(int j=0;j <=2;j++) { v.addelement((string)jtf[j].gettext()); jtf[j].settext( " "); } } if(ae.getsource()==jb2) { int i=0;//遍历vector用的索引值 //下面代码将vector里的元素负值给一个二维数组,此数组已知一维 for(int k=0;k <((int)v.size()/3);k++) { for(int h=0;h <=2;h++) { recorder[k][h]=(string)v.elementat(i); i++; system.out.println(recorder[k][h]); } } //用jtable(object[][] o1,object[] o2)构造函数创建表 jt=new jtable(recorder,tablehead); //将表jt放到jscrollpane里 int v=scrollpaneconstants.vertical_scrollbar_as_needed; int h=scrollpaneconstants.horizontal_scrollbar_as_needed; jscrollpane jsp=new jscrollpane(jt,v,h); jsp.setbounds(new rectangle(0,200,300,300)); jp.add(jsp); } } public static void main(string[] args) { new sunrg(); } } |
|
|
|
|