没太搞明白你的意思,参考一下试试
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.util.*;
import java.awt.event.*;public class Frame3 extends JFrame {
JScrollPane jScrollPane1 = new JScrollPane();
JTable jTable1 = new JTable();
DefaultTableModel dtm=null;
Vector columnNames=new Vector();
class RecordSet{
String name;
String age;
String address;
public RecordSet(String nm,String ag,String ad){
name=nm;
age=ag;
address=ad;
}
}
JButton jButton1 = new JButton(); public Frame3() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
jButton1.setText("jButton1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton1_actionPerformed(e);
}
});
this.getContentPane().add(jScrollPane1, BorderLayout.CENTER);
this.getContentPane().add(jButton1, BorderLayout.SOUTH);
jScrollPane1.getViewport().add(jTable1, null); columnNames.add("name");
columnNames.add("age");
columnNames.add("address");
dtm=new DefaultTableModel(columnNames,30); jTable1.setModel(dtm);
setSize(500,400);
pack();
show();
} public void dataChanged(Vector dc){
for(int i=0;i<dc.size();i++){
RecordSet rs=(RecordSet)dc.get(i);
dtm.setValueAt(rs.name,i,0);
dtm.setValueAt(rs.age,i,1);
dtm.setValueAt(rs.address,i,2);
}
} public static void main(String args[]){
Frame3 f=new Frame3();
} void jButton1_actionPerformed(ActionEvent e) {
Vector dataContainer=new Vector();
dataContainer.add(new RecordSet("mike","22","beijing"));
dataContainer.add(new RecordSet("rose","20","guangdong"));
dataContainer.add(new RecordSet("smith","25","tianjin"));
dataChanged(dataContainer);
}
}
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.util.*;
import java.awt.event.*;public class Frame3 extends JFrame {
JScrollPane jScrollPane1 = new JScrollPane();
JTable jTable1 = new JTable();
DefaultTableModel dtm=null;
Vector columnNames=new Vector();
class RecordSet{
String name;
String age;
String address;
public RecordSet(String nm,String ag,String ad){
name=nm;
age=ag;
address=ad;
}
}
JButton jButton1 = new JButton(); public Frame3() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
jButton1.setText("jButton1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton1_actionPerformed(e);
}
});
this.getContentPane().add(jScrollPane1, BorderLayout.CENTER);
this.getContentPane().add(jButton1, BorderLayout.SOUTH);
jScrollPane1.getViewport().add(jTable1, null); columnNames.add("name");
columnNames.add("age");
columnNames.add("address");
dtm=new DefaultTableModel(columnNames,30); jTable1.setModel(dtm);
setSize(500,400);
pack();
show();
} public void dataChanged(Vector dc){
for(int i=0;i<dc.size();i++){
RecordSet rs=(RecordSet)dc.get(i);
dtm.setValueAt(rs.name,i,0);
dtm.setValueAt(rs.age,i,1);
dtm.setValueAt(rs.address,i,2);
}
} public static void main(String args[]){
Frame3 f=new Frame3();
} void jButton1_actionPerformed(ActionEvent e) {
Vector dataContainer=new Vector();
dataContainer.add(new RecordSet("mike","22","beijing"));
dataContainer.add(new RecordSet("rose","20","guangdong"));
dataContainer.add(new RecordSet("smith","25","tianjin"));
dataChanged(dataContainer);
}
}
我参考别人的例子,原理是AbstractTableModel从vector中获得数据,由于一开始vector是空的,因此获得数据也是空的。JTABLE就显示空,等获得数据,在dataChanged方法里把获得的数据分解到Vector里,然后调用类似fireTableDataChanged的方法通知JTABLE自动从vector里获得所有数据并更新。dataChanged(obejct data)里的参数data就是收到的recordset[]。
好了补充说明完了,希望高手帮忙。明天就是最后期限,我真的十分着急。谢谢谢谢!!!
我以前做过一个,种种原因我不能给你整个代码,思路如下:
自己写个tablemode继承AbstractTableModel
除了实现那些方法外,自己写个更新数据的方法,
public myModel extends AbstractTableModel{
public Object data;
public myModel(Object _data){data=_data;}
比如public void updateData(Object _data){
data=_data;
this.fireTableChanged(null);
}
然后你要更新数据的时候,调用
table.getModel().updataData(data);就行了。用的时候:
myModel mym=new myModel(data);
JTable t=new JTable(mym);
希望对你有帮助。