最近有个项目是delphi来做的,之中有很多地方要用到数据表格。这种功能在delphi和vb中能很方便的做出来,java没
有提供这项功能,但是可以用jtable 来实现,不过就是麻烦了点:)。
下面是我用applet实现的一个简单数据表格程序代码。
package com.applet.cat10;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import com.util.*;
import java.util.*;
import javax.swing.table.*;
import java.sql.*;
/**
* title: cat工程
* description: bcat
* copyright: copyright (c) 2001
* company: smartcomm
* @author daniel
* @version 1.0
*/
public class testdatabase extends japplet {
boolean isstandalone = false;
jbutton jbutton1 = new jbutton(); //触发时间查询按扭
database db=new database();
jtable table1 = new jtable();
jscrollpane scroll = new jscrollpane();
jtextfield text1 = new jtextfield();
defaulttablemodel dtm; //定义表格的数据模型
vector vcdata=null; //定义表的列名(以vector存储)
resultset rsrow=null; //查询表的数据集合
/**construct the applet*/
public testdatabase() {
}
/**initialize the applet*/
public void init() {
try {
jbinit();
userinit(); //自定义的操作都在次方法中
}
catch(exception e) {
e.printstacktrace();
}
}
/**component initialization*/
private void jbinit() throws exception {
jbutton1.settext("jbutton1");
jbutton1.setbounds(new rectangle(26, 225, 79, 29));
jbutton1.addactionlistener(new java.awt.event.actionlistener() {
public void actionperformed(actionevent e) {
jbutton1_actionperformed(e);
}
});
this.setsize(new dimension(664, 300));
this.getcontentpane().setlayout(null);
scroll.setbounds(new rectangle(12, 24, 644, 189));
text1.setbounds(new rectangle(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() 数据表格的初始化*/
public void userinit()
{
db.connect(); //数据库连接
vcdata=db.getfieldnames("t_registration"); //得出列名(vector存储)
dtm=new defaulttablemodel(); //定义模式
table1.setmodel(dtm); //设定表模式
/**for 列出标题烂**/
for(int i=0;i<vcdata.size();i++)
dtm.addcolumn((string)vcdata.elementat(i));
rsrow=db.executequerytable("t_registration"); //得出数据集合
}
/**start the applet*/
public void start() {
}
/**stop the applet*/
public void stop() {
}
/**destroy the applet*/
public void destroy() {
}
//static initializer for setting look & feel
static {
try {
//uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname());
//uimanager.setlookandfeel(uimanager.getcrossplatformlookandfeelclassname());
}
catch(exception e) {
}
}
//触发查询事件
void jbutton1_actionperformed(actionevent e)
{
try
{
while(rsrow.next())
{
vector vrdata=new vector();
for(int i=0;i<vcdata.size();i++)
{
vrdata.addelement(rsrow.getstring((string)vcdata.elementat(i))); //列举列数据(vector存
储)
}
dtm.addrow(vrdata); //向表中添家数据
}
db.close();
}catch(exception ei)
{
system.out.println("error at jbutton1_actionperformed! in testdatabase" + ei.tostring());
}
}
}
这个程序简单的实现了数据表格功能,初始化状态是数据表格只有标题,当click 按扭显示数据。
1。在userinit()方法中做了数据表格的初始化,关键的方法:
建立表格模型: defaulttablemodel dtm=new defaulttablemodel(),
设定表模型:table1.setmodel(dtm)
设定表格标题:(一切操作可以在模型上做) dtm.addcolumn(vector arg),arg是表的标题,也就是field名字数组
得出数据的结果集合:rsrow=db.executequerytable("t_registration"),这就是一般的数据查询结果哦
2。在 void jbutton1_actionperformed(actionevent e)中显示数据,关键方法:
以行的方式加入数据:dtm.addrow(vector arg)。
3。jtable有很多的实例化方式,这里采用的是defaulttablemodel模型,对表的操作都可以建立在模型上。
4。以后如果更改表中的数据的话可以在模型上修改如:
更新3行4列的数据:dtm.setvalueat("bigcat",3,4),也可以table1.setvalueat("bigcat",3,4).
得出3行4列数据:object rs=dtm.getvalueat(3,4);
删除第3行数据:dtm.removerow(3)
具体数据表格的展现方式大家可以自己修改设定。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器