发布网友 发布时间:2022-04-15 05:07
共1个回答
热心网友 时间:2022-04-15 06:36
最近有个项目是delphi来做的,之中有很多地方要用到数据表格。这种功能在delphi和vb中能很方便的做出来,java没 有提供这项功能,但是可以用Jtable来实现,不过就是麻烦了点:)。 下面是我用applet实现的一个简单数据表格程序代码。 packagecom.applet.cat10; importjava.awt.*; importjava.awt.event.*; importjava.applet.*; importjavax.swing.*; importcom.util.*; importjava.util.*; importjavax.swing.table.*; importjava.sql.*; /** *Title:Cat工程 *Description:BCat *Copyright:Copyright(c)2001 *Company:smartcomm *@authordaniel *@version1.0 */ publicclassTestDatabaseextendsJApplet{ booleanisStandalone=false; JButtonjButton1=newJButton();//触发时间查询按扭 Databasedb=newDatabase(); JTabletable1=newJTable(); JScrollPanescroll=newJScrollPane(); JTextFieldtext1=newJTextField(); DefaultTableModeldtm;//定义表格的数据模型 VectorvCdata=null;//定义表的列名(以vector存储) ResultSetrsRow=null;//查询表的数据集合 /**Constructtheapplet*/ publicTestDatabase(){ } /**Initializetheapplet*/ publicvoidinit(){ try{ jbInit(); userInit();//自定义的操作都在次方法中 } catch(Exceptione){ e.printStackTrace(); } } /**Componentinitialization*/ privatevoidjbInit()throwsException{ jButton1.setText("jButton1"); jButton1.setBounds(newRectangle(26,225,79,29)); jButton1.addActionListener(newjava.awt.event.ActionListener(){ publicvoidactionPerformed(ActionEvente){ jButton1_actionPerformed(e); } }); this.setSize(newDimension(664,300)); this.getContentPane().setLayout(null); scroll.setBounds(newRectangle(12,24,644,189)); text1.setBounds(newRectangle(16,271,365,22)); this.getContentPane().add(scroll,null); this.getContentPane().add(jButton1,null); //this.getContentPane().add(text1,null); scroll.getViewport().add(table1,null); } /*userInit()数据表格的初始化*/ publicvoiserInit() { db.connect();//数据库连接 vCdata=db.getFieldNames("T_REGISTRATION");//得出列名(vector存储) dtm=newDefaultTableModel();//定义模式 table1.setModel(dtm);//设定表模式 /**for列出标题烂**/ for(inti=0;i<vCdata.size();i++) dtm.addColumn((String)vCdata.elementAt(i)); rsRow=db.executeQueryTable("T_REGISTRATION");//得出数据集合 } /**Starttheapplet*/ publicvoidstart(){ } /**Stoptheapplet*/ publicvoidstop(){ } /**Destroytheapplet*/ publicvoiddestroy(){ } //staticinitializerforsettinglook&feel static{ try{ //UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); //UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); } catch(Exceptione){ } } //触发查询事件 voidjButton1_actionPerformed(ActionEvente) { try { while(rsRow.next()) { VectorvRdata=newVector(); for(inti=0;i<vCdata.size();i++) { vRdata.addElement(rsRow.getString((String)vCdata.elementAt(i)));//列举列数据(vector存 储) } dtm.addRow(vRdata);//向表中添家数据 } db.close(); }catch(Exceptionei) { System.out.println("erroratjButton1_actionPerformed!inTestDatabase"+ei.toString()); } } } 这个程序简单的实现了数据表格功能,初始化状态是数据表格只有标题,当click按扭显示数据。 1。在userInit()方法中做了数据表格的初始化,关键的方法: 建立表格模型:DefaultTableModeldtm=newDefaultTableModel(), 设定表模型:table1.setModel(dtm) 设定表格标题:(一切操作可以在模型上做)dtm.addColumn(Vectorarg),arg是表的标题,也就是field名字数组 得出数据的结果集合:rsRow=db.executeQueryTable("T_REGISTRATION"),这就是一般的数据查询结果哦 2。在voidjButton1_actionPerformed(ActionEvente)中显示数据,关键方法: 以行的方式加入数据:dtm.addRow(Vectorarg)。 3。Jtable有很多的实例化方式,这里采用的是DefaultTableModel模型,对表的操作都可以建立在模型上。 4。以后如果更改表中的数据的话可以在模型上修改如: 更新3行4列的数据:dtm.set&#118alueAt("bigCat",3,4),也可以table1.set&#118alueAt("bigCat",3,4). 得出3行4列数据:Objectrs=dtm.get&#118alueAt(3,4); 删除第3行数据:dtm.removeRow(3) 具体数据表格的展现方式大家可以自己修改设定。