为什么JTable中看不到数据?

问题描述 投票:0回答:2

我正在创建一个地址簿,并且我已经准备好了很多功能。然而实际的表格是看不到的。数据就在那里。我可以保存并加载它,但实际上看不到任何数据。我尝试了很多事情,

setContentPane()
就是其中之一。我也曾在 Oracle 网站上花费过时间,但无济于事。我有显示该表的示例表,并尝试复制一些代码,但同样无济于事。

public AddressBookGUI()
{
    /*
     * Initialise
     */
    
    addresses = new ArrayList<Person>();
    Person a = new Person("Kathy", "Smith", "1 mith Sqaoiudh", "Lonodn", "London", "BN76 8QQ", "01980472", "[email protected]");
    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);  
    
}
java swing jtable tablemodel
2个回答
2
投票

注释-在此语句中,以便为

TableModel
JTable
 设置 
myTable

//myTable.setModel(addressBook);

确保

AddressBook
确实是一个正常运行的自定义 TableModel


2
投票

要显示表中的数据,应设置表模型

例如

Object[][] d = {{1,2},{2,1}};
Object[] s = {"one", "two"};
tableA.setModel(new DefaultTableModel(d, s));
© www.soinside.com 2019 - 2024. All rights reserved.