javaswingjtabletablemodel

Why the data isn't seen in JTable?


I am creating an address book, and I have a lot of the functionality in place. However, the actual table cannot be seen. The data is there. I can save it and load it, but I can't actually see any data. I have tried lots of things, the setContentPane() is being one. I have also spent time on the Oracle website, but to no avail. I have the sample table which shows the table, and tried to copy some code, but again, no avail.

public AddressBookGUI()
{
    /*
     * Initialise
     */
    
    addresses = new ArrayList<Person>();
    Person a = new Person("Kathy", "Smith", "1 mith Sqaoiudh", "Lonodn", "London", "BN76 8QQ", "01980472", "LKSJ@kied.con");
    addresses.add(a);
    addressBook = new AddressBook(addresses, columnNames);
    
//  JTable addressTable = new JTable(new TableModel());
    //addressTable.setModel(new addressTable.TableModel());
    
    createAddAddressFrame();
    createEditAddressFrame();
    createDeleteAddressFrame();
    createAddressBookFrame();
}

//Create the address book frame
private void createAddressBookFrame() {
    
    //Create frame
    addressBookFrame = new JFrame("My Address Book");
    
    //Create menu bar
    mb = new JMenuBar();
    
    //Create file menu
    fileMenu = new JMenu("File");
        anew = new JMenuItem("New");
        open = new JMenuItem("Open");
        save = new JMenuItem("Save");
        saveAs = new JMenuItem("Save As");
        print = new JMenuItem("Print");
        quit = new JMenuItem("Quit");
    
    //Create edit menu
    editMenu = new JMenu("Edit");
        sort = new JMenu("Sort");
            byName = new JMenuItem("By Name");
            byPC = new JMenuItem("By Post Code");
        editSelectedPerson = new JMenuItem("Edit Selected Person");
        find = new JMenuItem("Find");
        findAgain = new JMenuItem("Find Again");
    //Add menu items to menu bar and menu
        mb.add(fileMenu);
        fileMenu.add(anew);
        fileMenu.add(open);
        fileMenu.add(save);
        fileMenu.add(saveAs);
        fileMenu.addSeparator();
        fileMenu.add(print);
        fileMenu.add(quit);
    mb.add(editMenu);
        editMenu.add(editSelectedPerson);
        editMenu.add(sort);
            sort.add(byName);
            sort.add(byPC);
        editMenu.addSeparator();
        editMenu.add(find);
        editMenu.add(findAgain);
    
    //Set menu bar
    addressBookFrame.setJMenuBar(mb);
    
    //Add buttons to bottom of frame
    buttonPanel = new JPanel();
    buttonPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
    
    //Add buttons
    addButton = new JButton("Add");
    editButton = new JButton("Edit...");
    deleteButton = new JButton("Delete");
    buttonPanel.add(addButton);
    buttonPanel.add(editButton);
    buttonPanel.add(deleteButton);
    
    //Add button panel
    addressBookFrame.add(buttonPanel, BorderLayout.SOUTH);
    
    //Add action Listeners
    //BUTTONS
    //Add
    class addListener implements ActionListener
    {
        public void actionPerformed (ActionEvent e)
        {
            //Set text of JTextFields
            addAddressFrame.setVisible(true);
        }
    }
    ActionListener addList = new addListener();
    addButton.addActionListener(addList);
    
    //Edit
    class editListener implements ActionListener
    {
        public void actionPerformed (ActionEvent e)
        {
            row = myTable.getSelectedRow();
            if (row != -1) {
                //jtf1.setText((String)addressBook.getValueAt(row, 0));
                //repeat
            }
        }
    }
    ActionListener editList = new editListener();
    editButton.addActionListener(editList);
    
    //Delete
    class delListener implements ActionListener
    {
        public void actionPerformed (ActionEvent e)
        {
            row = myTable.getSelectedRow();
            if (row != -1) {
                deleteAddressFrame.setVisible(true);
            }
        }
    }
    ActionListener delList = new delListener();
    deleteButton.addActionListener(delList);

    
    //MENU ITEMS
    //New
    class newListener implements ActionListener
    {
        public void actionPerformed (ActionEvent e)
        {
            addresses.clear();
            refreshAddressBook();
        }
    }
    ActionListener newList = new newListener();
    anew.addActionListener(newList);
    
    //open
    class openListener implements ActionListener
    {
        public void actionPerformed (ActionEvent e)
        {
            addresses.clear();
            loadFile();
        }
    }
    ActionListener openList = new openListener();
    open.addActionListener(openList);
    
    //save
    class saveListener implements ActionListener
    {
        public void actionPerformed (ActionEvent e)
        {
            
        }
    }
    ActionListener saveList = new saveListener();
    save.addActionListener(saveList);
    
    //save as
    class saveAsListener implements ActionListener
    {
        public void actionPerformed (ActionEvent e)
        {
            saveToFile();
        }
    }
    ActionListener saveAsList = new saveAsListener();
    saveAs.addActionListener(saveAsList);
    
    //print
    class printListener implements ActionListener
    {
        public void actionPerformed (ActionEvent e)
        {
            printAddresses();
        }
    }
    ActionListener printList = new printListener();
    print.addActionListener(printList);
    
    //quit
    class quitListener implements ActionListener
    {
        public void actionPerformed (ActionEvent e)
        {
            System.exit(0);
        }
    }
    ActionListener quitList = new quitListener();
    quit.addActionListener(quitList);
    
    //edit selected person
    class espListener implements ActionListener
    {
        public void actionPerformed (ActionEvent e)
        {
            
        }
    }
    ActionListener espList = new espListener();
    editSelectedPerson.addActionListener(espList);
    
    //sort by name
    class sbnListener implements ActionListener
    {
        public void actionPerformed (ActionEvent e)
        {
            sortByName();
        }
    }
    ActionListener sbnList = new sbnListener();
    byName.addActionListener(sbnList);
    
    //sort by post code
    class sbpcListener implements ActionListener
    {
        public void actionPerformed (ActionEvent e)
        {
            }
    }
    ActionListener sbpcList = new sbpcListener();
    byPC.addActionListener(sbpcList);
    
    //find
    class findListener implements ActionListener
    {
        public void actionPerformed (ActionEvent e)
        {
            }
    }
    ActionListener findList = new findListener();
    find.addActionListener(findList);
    
    //find again
    class findAgainListener implements ActionListener
    {
        public void actionPerformed (ActionEvent e)
        {
            }
    }
    ActionListener findAgainList = new findAgainListener();
    findAgain.addActionListener(findAgainList);
    
    myTable = new JTable();
    myTable.setPreferredScrollableViewportSize(new Dimension(500,800));
    myTable.setFillsViewportHeight(true);
    //myTable.setModel(addressBook);
    
    JScrollPane scrollPane = new JScrollPane(myTable);
    scrollPane.setOpaque(true);
    addressBookFrame.add(scrollPane, BorderLayout.CENTER);
    //addressBookFrame.add(myTable, BorderLayout.CENTER);
    
    //FInally show the address book
    addressBookFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    addressBookFrame.setTitle("My Address Book");
    addressBookFrame.setSize(800, 400);
    addressBookFrame.setVisible(true);  
    
}

Solution

  • Comment-in this statement so that a TableModel is set for the JTable myTable

    //myTable.setModel(addressBook);
    

    Ensure that AddressBook is indeed a functioning custom TableModel