Serialize a JTable
Hi,
I try to serialize a JTable including the data.
First I tried to extend an AbstractTableModel but this does not work.
The second try was the following code.
What do I need to change to get it to work?
Environment: Eclipse 3.2.1, Java 1.4 / 1.6
/**
package BitSetEdit;
import java.awt.event.KeyEvent;
/**
* @author wilfried
*
*/
publicclass BitSetEditMain{
private JFrame jFrame =null;
private JPanel jContentPane =null;
private JMenuBar jJMenuBar =null;
private JMenu fileMenu =null;
private JMenu editMenu =null;
private JMenu helpMenu =null;
private JMenuItem exitMenuItem =null;
private JMenuItem aboutMenuItem =null;
private JMenuItem saveMenuItem =null;
private JMenuItem loadMenuItem =null;
private JMenuItem addRegRowMenuItem =null;
private JDialog aboutDialog =null;
private JPanel aboutContentPane =null;
private JLabel aboutVersionLabel =null;
private JScrollPane jScrollPane =null;
private DataInputPanel pDataInputPanel =null;
/**
*
*/
public BitSetEditMain(){
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane(){
if (jScrollPane ==null){
jScrollPane =new JScrollPane();
jScrollPane.setViewportView(getDataInputPanel());
}
return jScrollPane;
}
/**
* This method initializes jTable
*
* @return javax.swing.JTable
*/
private JPanel getDataInputPanel(){
if (pDataInputPanel ==null){
pDataInputPanel=new DataInputPanel();
}
return pDataInputPanel;
}
/**
* @param args
*/
publicstaticvoid main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
publicvoid run(){
BitSetEditMain application =new BitSetEditMain();
application.getJFrame().setVisible(true);
}
});
}
/**
* This method initializes jFrame
*
* @return javax.swing.JFrame
*/
private JFrame getJFrame(){
if (jFrame ==null){
jFrame =new JFrame();
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setJMenuBar(getJJMenuBar());
jFrame.setSize(300, 200);
jFrame.setContentPane(getJContentPane());
jFrame.setTitle("BitSet Data Structure Editor");
}
return jFrame;
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane(){
if (jContentPane ==null){
jContentPane =new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJScrollPane(), BorderLayout.NORTH);
}
return jContentPane;
}
/**
* This method initializes jJMenuBar
*
* @return javax.swing.JMenuBar
*/
private JMenuBar getJJMenuBar(){
if (jJMenuBar ==null){
jJMenuBar =new JMenuBar();
jJMenuBar.add(getFileMenu());
jJMenuBar.add(getEditMenu());
jJMenuBar.add(getHelpMenu());
}
return jJMenuBar;
}
/**
* This method initializes jMenu
*
* @return javax.swing.JMenu
*/
private JMenu getFileMenu(){
if (fileMenu ==null){
fileMenu =new JMenu();
fileMenu.setText("File");
fileMenu.add(getSaveMenuItem());
fileMenu.add(getLoadMenuItem());
fileMenu.add(getExitMenuItem());
}
return fileMenu;
}
/**
* This method initializes jMenu
*
* @return javax.swing.JMenu
*/
private JMenu getEditMenu(){
if (editMenu ==null){
editMenu =new JMenu();
editMenu.setText("Edit");
editMenu.add(getAddRegRow());
}
return editMenu;
}
/**
* This method initializes jMenu
*
* @return javax.swing.JMenu
*/
private JMenu getHelpMenu(){
if (helpMenu ==null){
helpMenu =new JMenu();
helpMenu.setText("Help");
helpMenu.add(getAboutMenuItem());
}
return helpMenu;
}
/**
* This method initializes jMenuItem
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getExitMenuItem(){
if (exitMenuItem ==null){
exitMenuItem =new JMenuItem();
exitMenuItem.setText("Exit");
exitMenuItem.addActionListener(new ActionListener(){
publicvoid actionPerformed(ActionEvent e){
System.exit(0);
}
});
}
return exitMenuItem;
}
/**
* This method initializes jMenuItem
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getAboutMenuItem(){
if (aboutMenuItem ==null){
aboutMenuItem =new JMenuItem();
aboutMenuItem.setText("About");
aboutMenuItem.addActionListener(new ActionListener(){
publicvoid actionPerformed(ActionEvent e){
JDialog aboutDialog = getAboutDialog();
aboutDialog.pack();
Point loc = getJFrame().getLocation();
loc.translate(20, 20);
aboutDialog.setLocation(loc);
aboutDialog.setVisible(true);
}
});
}
return aboutMenuItem;
}
/**
* This method initializes aboutDialog
*
* @return javax.swing.JDialog
*/
private JDialog getAboutDialog(){
if (aboutDialog ==null){
aboutDialog =new JDialog(getJFrame(),true);
aboutDialog.setTitle("About");
aboutDialog.setContentPane(getAboutContentPane());
}
return aboutDialog;
}
/**
* This method initializes aboutContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getAboutContentPane(){
if (aboutContentPane ==null){
aboutContentPane =new JPanel();
aboutContentPane.setLayout(new BorderLayout());
aboutContentPane.add(getAboutVersionLabel(), BorderLayout.CENTER);
}
return aboutContentPane;
}
/**
* This method initializes aboutVersionLabel
*
* @return javax.swing.JLabel
*/
private JLabel getAboutVersionLabel(){
if (aboutVersionLabel ==null){
aboutVersionLabel =new JLabel();
aboutVersionLabel.setText("Version 1.0");
aboutVersionLabel.setHorizontalAlignment(SwingConstants.CENTER);
}
return aboutVersionLabel;
}
/**
* This method initializes jMenuItem
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getSaveMenuItem(){
if (saveMenuItem ==null){
saveMenuItem =new JMenuItem();
saveMenuItem.setText("Save");
saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
Event.CTRL_MASK,true));
saveMenuItem.addActionListener(new java.awt.event.ActionListener(){
publicvoid actionPerformed(java.awt.event.ActionEvent e){
System.out.println("save");
FileOutputStream fos =null;
ObjectOutputStream out =null;
try{
fos =new FileOutputStream("/home/wilfried/serialize-bitset.ser");
out =new ObjectOutputStream(fos);
out.writeObject(pDataInputPanel);
out.close();
}
catch(IOException ex){
ex.printStackTrace();
}
}
});
}
return saveMenuItem;
}
private JMenuItem getAddRegRow(){
if (addRegRowMenuItem ==null){
addRegRowMenuItem =new JMenuItem();
addRegRowMenuItem.setText("add Register");
addRegRowMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,Event.CTRL_MASK,true));
addRegRowMenuItem.addActionListener(new java.awt.event.ActionListener(){
publicvoid actionPerformed(java.awt.event.ActionEvent e){
System.out.println("add Row (Reigster Table))");
}
});
}
return addRegRowMenuItem;
}
private JMenuItem getLoadMenuItem(){
if (loadMenuItem ==null){
loadMenuItem =new JMenuItem();
loadMenuItem.setText("Load");
loadMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,
Event.CTRL_MASK,true));
loadMenuItem.addActionListener(new java.awt.event.ActionListener(){
publicvoid actionPerformed(java.awt.event.ActionEvent e){
System.out.println("load");
FileInputStream fis =null;
ObjectInputStream in =null;
DataInputPanel dip =null;
try{
fis =new FileInputStream("/home/wilfried/serialize-bitset.ser");
in =new ObjectInputStream(fis);
dip = (DataInputPanel) in.readObject();
in.close();
}
catch(IOException ex){
ex.printStackTrace();
}
catch(ClassNotFoundException ex){
ex.printStackTrace();
}
if (dip !=null){
pDataInputPanel = dip;
jScrollPane.setViewportView(getDataInputPanel());
}
}
});
}
return loadMenuItem;
}
}
/**
*
*/
package BitSetEdit;
import javax.swing.BoxLayout;
import javax.swing.JPanel;
import javax.swing.JTable;
import java.io.Serializable;
/**
* @author wilfried
*
*/
publicclass DataInputPanelextends JPanelimplements Serializable{
/**
*
*/
privatestaticfinallong serialVersionUID = 1;
/**
*
*/
JTable jTable =null;
/**
*
*/
public DataInputPanel(){
this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
String[] ColumnNames ={"Register","Size"};
Object[][] data ={{"test","8"},{"timer","8"}};
jTable =new JTable(data,ColumnNames);
add(jTable);
}
}

