为此,您需要将数据存储在某个地方(数据库、文件或其他地方)。将数据从TableModelto 文件序列化然后将其恢复到JTable. 试试下一个简单的例子:
import java.awt.BorderLayout;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
public class Example extends JFrame {
private JTable t1;
public Example(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
initComponents();
setVisible(true);
pack();
}
public static void main(String...strings ){
new Example();
}
private void initComponents() {
t1 = new JTable(getModel());
add(new JScrollPane(t1),BorderLayout.NORTH);
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
storeTableModel((DefaultTableModel) t1.getModel());
}
});
}
private TableModel getModel() {
DefaultTableModel model = new DefaultTableModel(3,3);
ObjectInputStream ois = null;
try {
ois = new ObjectInputStream(new FileInputStream("c:\\test"));
Vector data = (Vector) ois.readObject();
Vector<Object> cols = new Vector<>();
for(int i=1;i<=data.size();i++){
cols.add(i);
}
model.setDataVector(data, cols);
} catch (Exception e) {
e.printStackTrace();
} finally{
if(ois != null)
try {
ois.close();
} catch (IOException e) {
}
}
return model;
}
public void storeTableModel(DefaultTableModel model) {
ObjectOutputStream oos = null;
try {
oos = new ObjectOutputStream(new FileOutputStream("c:\\test"));
oos.writeObject(model.getDataVector());
} catch (Exception e) {
e.printStackTrace();
} finally{
if(oos != null)
try {
oos.close();
} catch (IOException e) {
}
}
}
}
Run Code Online (Sandbox Code Playgroud)