Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8409163
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 9, 20262026-06-09T23:49:44+00:00 2026-06-09T23:49:44+00:00

I have created a simple GUI which includes a JTable. This table may be

  • 0

I have created a simple GUI which includes a JTable. This table may be saved & loaded via the appropriate Object Stream.

At this point the Save function is working as intended, and I can see the table object is stored in a file when looking in the save directory.

However, when I try to load the table from the file, the GUI never displays the loaded table. The actionlistener function is called, as I have a system.out “Data loaded”, but the table never displays updated data.

I have tried to call repaint(), but to no avail. To anyone who can shed some light on what I may be doing wrong, I would be most grateful.

A look at some code

import javax.swing.*;
import java.awt.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.imageio.*;
import java.io.*;
import java.awt.image.BufferedImage;
import java.util.*;
import javax.swing.table.*;
import java.awt.event.*;


public class Save3 extends JFrame implements ActionListener{

public int PADDING = 10;

public JMenuItem menuNew;
public JMenuItem menuOpen;
public JMenuItem menuSave;
public JMenuItem menuExit;

public JPanel       container;

public DefaultTableModel    model;
public JScrollPane          scrollPane;
public JTable               table;

public FileInputStream      fis;
public ObjectInputStream    in;
public FileOutputStream     fos;
public ObjectOutputStream   out;
public String               filename;


public Save3(){
    fis         = null;
    in          = null;
    fos         = null;
    out         = null;
    filename    = "test.ref";
    initGUI();
}

public void initGUI(){
    setTitle("WIM Reference Data Comparison Tool");
    setSize(500, 400);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLocationRelativeTo(null);

    // Menu Bar and Menu Items setup
    JMenuBar    menuBar;
    JMenu       menu;
    JMenuItem   menuItem;

    menuBar = new JMenuBar();
    menu = new JMenu("Menu");
    menuBar.add(menu);

    menuNew     = new JMenuItem("New");
    menuOpen    = new JMenuItem("Open");
    menuSave    = new JMenuItem("Save");
    menuExit    = new JMenuItem("Exit");

    menuNew.addActionListener(this);
    menuOpen.addActionListener(this);
    menuSave.addActionListener(this);
    menuExit.addActionListener(this);

    menu.add(menuNew);
    menu.add(menuOpen);
    menu.add(menuSave);
    menu.add(menuExit);
    setJMenuBar(menuBar);               


    container       = new JPanel(new BorderLayout());

    String[] columnNames = {"", "MotorBike", " Car"}; 
    Object[][] data = { {"Vehicle Summary", new Integer(100), new Integer(200)},  // Header 1: Green
                        {"Axle Numbers", new Integer(100), new Integer(200)},
                        {"Axle Code", new Integer(100), new Integer(200)},
                        {"Axle Distances (cm)", new Integer(100), new Integer(200)},
                        {"Vehicle Speed (km/h)", new Integer(100), new Integer(200)},
                        {"Gross Weight", new Integer(100), new Integer(200)}, 
                        {"Axle Weight 1", new Integer(100), new Integer(200)},
                        {"Axle Weight 2", new Integer(100), new Integer(200)},
                        };

    model = new DefaultTableModel(data, columnNames);
    table = new JTable(data, columnNames);
    table.setPreferredScrollableViewportSize(new Dimension(500, 70)); 
    table.setFillsViewportHeight(true); 
    scrollPane = new JScrollPane(table); 


    container.add(scrollPane, BorderLayout.CENTER);
    add(container);
}



public void setPanel(JTable table){

    scrollPane.remove(table);
    container.remove(scrollPane);

    scrollPane  = new JScrollPane(table); 
    container.add(scrollPane, BorderLayout.CENTER);

    repaint();
}

public void actionPerformed(ActionEvent e){
    System.out.println("Clicked item!");
    // NEW
    if(e.getSource() == menuNew){
        System.out.println("New File");
    }
    // SAVE
    if(e.getSource() == menuSave){
        System.out.println("Save!");
        try{
            model.fireTableDataChanged();               
            table = new JTable(model);
            fos     = new FileOutputStream(filename);
            out     = new ObjectOutputStream(fos);
            out.writeObject(table);
        }catch(IOException e3){
            e3.printStackTrace();
        }
    }
    if(e.getSource() == menuOpen){
        System.out.println("Open!");

        JTable table = new JTable();
        try{
            fis     = new FileInputStream(filename);
            in      = new ObjectInputStream(fis);

            table   = new JTable();
            table   = (JTable) in.readObject();
            in.close(); 

            setPanel(table);

            System.out.println("data loaded");

        }catch(IOException e1){
            e1.printStackTrace();
        }catch(ClassNotFoundException e2){
            e2.printStackTrace();
        }
    }
    if(e.getSource() == menuExit){
        System.out.println("Exit!");
    }
}



   public static void main(String[] args) {

    SwingUtilities.invokeLater(new Runnable() {

        public void run() {

            try {
                UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
            } catch (Exception e) {
                e.printStackTrace();
            }

            Save3 ex = new Save3();
            ex.setVisible(true);
        }
    });
}

}

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-09T23:49:46+00:00Added an answer on June 9, 2026 at 11:49 pm

    Your new table is not added anywhere, so it will not show up. Try something like this:

    public void actionPerformed(ActionEvent e){
      JTable oldTable = table;
    
      // your stuff, loading the table from file
    
      thePanelHoldingYourTable.remove(oldTable);
      thePanelHoldingYourTable.add(table);
      // if there are other components in that panel, make sure, your table is in the right spot
      // maybe refresh your layout by using invalidate()
    }
    

    EDIT: Ok, serializing the table is not really advised, it is better to only save the table model. Here is your edited SSCCE (thanks to kleopatra for the help):

    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.SwingUtilities;
    import javax.swing.table.DefaultTableModel;
    
    public class Save3 extends JFrame implements ActionListener {
        private static final long serialVersionUID = 1L;
    
        public int PADDING = 10;
    
        public JMenuItem menuNew;
        public JMenuItem menuOpen;
        public JMenuItem menuSave;
        public JMenuItem menuExit;
    
        public JPanel container;
    
        public DefaultTableModel model;
        public JScrollPane scrollPane;
        public JTable table;
    
        public FileInputStream fis;
        public ObjectInputStream in;
        public FileOutputStream fos;
        public ObjectOutputStream out;
        public String filename;
    
        String[] columnNames = {"", "MotorBike", " Car"};
        Object[][] data = { {"Vehicle Summary", new Integer(100), new Integer(200)},  // Header 1: Green
        {"Axle Numbers", new Integer(100), new Integer(200)}, {"Axle Code", new Integer(100), new Integer(200)}, {"Axle Distances (cm)", new Integer(100), new Integer(200)}, {"Vehicle Speed (km/h)", new Integer(100), new Integer(200)}, {"Gross Weight", new Integer(100), new Integer(200)}, {"Axle Weight 1", new Integer(100), new Integer(200)}, {"Axle Weight 2", new Integer(100), new Integer(200)},};
    
        public Save3() {
            fis = null;
            in = null;
            fos = null;
            out = null;
            filename = "test.ref";
            initGUI();
        }
    
        public void initGUI() {
            setTitle("WIM Reference Data Comparison Tool");
            setSize(500, 400);
            setVisible(true);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setLocationRelativeTo(null);
    
            // Menu Bar and Menu Items setup
            JMenuBar menuBar;
            JMenu menu;
    
            menuBar = new JMenuBar();
            menu = new JMenu("Menu");
            menuBar.add(menu);
    
            menuNew = new JMenuItem("New");
            menuOpen = new JMenuItem("Open");
            menuSave = new JMenuItem("Save");
            menuExit = new JMenuItem("Exit");
    
            menuNew.addActionListener(this);
            menuOpen.addActionListener(this);
            menuSave.addActionListener(this);
            menuExit.addActionListener(this);
    
            menu.add(menuNew);
            menu.add(menuOpen);
            menu.add(menuSave);
            menu.add(menuExit);
            setJMenuBar(menuBar);
    
            container = new JPanel(new BorderLayout());
    
            model = new DefaultTableModel(data, columnNames);
            table = new JTable();
            table.setModel(model);
            table.setPreferredScrollableViewportSize(new Dimension(500, 70));
            table.setFillsViewportHeight(true);
            scrollPane = new JScrollPane(table);
    
            container.add(scrollPane, BorderLayout.CENTER);
            add(container);
        }
    
        public void setModel(DefaultTableModel writeModel) {
            table.setModel(writeModel);
        }
    
        public void actionPerformed(ActionEvent e) {
            System.out.println("Clicked item!");
            if (e.getSource() == menuNew) {
                System.out.println("New File");
            } else if (e.getSource() == menuSave) {
                System.out.println("Save!");
                try {
                    fos = new FileOutputStream(filename);
                    out = new ObjectOutputStream(fos);
                    table.clearSelection();
                    table.setModel(new DefaultTableModel());
                    out.writeObject(model);
                    table.setModel(model);
                } catch (IOException e3) {
                    e3.printStackTrace();
                } finally {
                    try {
                        out.close();
                        fos.close();
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
                }
            } else if (e.getSource() == menuOpen) {
                System.out.println("Open!");
                try {
                    fis = new FileInputStream(filename);
                    in = new ObjectInputStream(fis);
                    DefaultTableModel modelRead = (DefaultTableModel) in.readObject();
                    setModel(modelRead);
                    System.out.println("data loaded");
                    in.close();
                    fis.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                } catch (ClassNotFoundException e2) {
                    e2.printStackTrace();
                }
            } else if (e.getSource() == menuExit) {
                System.out.println("Exit!");
            }
        }
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    Save3 ex = new Save3();
                    ex.setVisible(true);
                }
            });
        }
    }
    

    Please notice that I use the following three lines to serialize the model:

    table.setModel(new DefaultTableModel());
    out.writeObject(model);
    table.setModel(model);
    

    So the model is detached from the table while serializing. Unfortunately the model tries to serialize its listeners as well (which fails). That’s why this step is neccessary. Once saved, the model can be applied to the table again.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have created a GUI for starting a Thread which does something very simple.
I have created a simple GUI engine which I plan to use in a
I have created a very simple GUI project in Qt as follows: main: #include
Could someone help me on this, I have created simple web services using axis2
I have created this simple program to learn shared_ptr using namespace std; #define Yes
i have created a simple public ref class in the vc++ project, which is
I have created a simple, light weight, GUI similar to Microsoft Metro UI .
I am relatively new to GUI's in Matlab, and I have created a simple
I have created the above simple GUI in c++. I would like the static
How to manually create Friendly URLs? (PHP) So I have created simple php file

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.