程序如下 :
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;
import java.util.*;
import java.io.*;
import java.awt.event.*;
public class Table_2 extends JFrame
{
JTable jtable;
DefaultTableModel data;
Vector v1,v2,v3,v4;
Vector vname=new Vector();
Vector vdata=new Vector();
public Table_2()
{
data=new DefaultTableModel();
data.addTableModelListener(new TML());
v1=new Vector();
v2=new Vector();
v3=new Vector();
v4=new Vector();
vname.add(new Integer(1));
vname.add(new Integer(2));
vname.add(new Integer(3));
vname.add(new Integer(4));
for(int i=0;i<8;i++)
{
v1.add(new String("Enm-1>:"+i));
v2.add(new String("Enm-2>:"+i));
v3.add(new String("Enm-3>:"+i));
v4.add(new String("Enm-4>:"+i));
}
vdata.add(v1);
data.setDataVector(vdata,vname);
/*
data.addColumn(new Integer(1),v1);
data.addColumn(new Integer(2),v2);
data.addColumn(new Integer(3),v3);
data.addColumn(new Integer(4),v4);
*/
jtable=new JTable(data);
jtable.setCellSelectionEnabled(false);
this.getContentPane().add(new JScrollPane(jtable));
this.setSize(300,300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//System.out.println(jtable.getValueAt(0,1));
}
class TML implements TableModelListener {
public void tableChanged(TableModelEvent e)
{
if(jtable!=null)
{
System.out.println(jtable.getValueAt(jtable.getSelectedRow(),jtable.getSelectedColumn()));
writeFile();
}
}
}
void writeFile(){
try{
FileOutputStream fos=new FileOutputStream("pay.txt");
BufferedOutputStream fis=new BufferedOutputStream(fos);
ObjectOutputStream fas=new ObjectOutputStream(fis);
v1=data.getDataVector();
fas.writeObject(v1);
// System.out.print(vector);
fas.flush();
fas.close();
}catch(Exception e){}
}
void readFile(){
try{
FileInputStream fos=new FileInputStream("pay.txt");
BufferedInputStream fis=new BufferedInputStream(fos);
ObjectInputStream fas=new ObjectInputStream(fis);
v1=(Vector)fas.readObject();
data.setDataVector(v1,vname);
jtable.repaint();
fas.close();
}catch(Throwable e)
{
e.printStackTrace();
}
}
public static void main(String args[])
{
new Table_2();
}
}
但,我有一事不明,请指教
编辑前jtable显示:Enm-1>:0,Enm-1>:1,Enm-1>:2,Enm-1>:3
我改为: 1 , 2 , 3 , 4 ,后关闭jtable
再打开后又是: Enm-1>:0,Enm-1>:1,Enm-1>:2,Enm-1>:3
为什么再打开后还是Enm-1>:0,Enm-1>:1,Enm-1>:2,Enm-1>:3
而不是1,2,3,4
怎样修改此程序才能显示1,2,3,4(编辑jtable
后的内容)?
我初学JAVA,请多多指教