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);

}

}

[20172 byte] By [JIXa] at [2007-11-26 19:44:37]
# 1
I think the problem is that the "SerialVersionUID" is "static" but was not "transient".
JIXa at 2007-7-9 22:28:58 > top of Java-index,Core,Core APIs...