Jtable没有重画

时间:2016-08-14 04:54:55

标签: java jtable deserialization

这里我有一个程序,如果用户想要更新TABLE的数据,可以通过导入它来初始化Jtable。

Vector<String> rowOne = new Vector<>();  //Uses this Dta instead of Desearilze.
            rowOne.addElement("Harry");
            rowOne.addElement("100414");
            rowOne.addElement("21");
            rowOne.addElement("239438"); 
            rowOne.addElement("24/24/23");
            rowOne.addElement("30000");

            Vector<Vector> rowData = new Vector<>();
            rowData.addElement(rowOne);

            columnNames = new Vector<>();
            columnNames.addElement("Name");
            columnNames.addElement("Cc");
            columnNames.addElement("Age");
            columnNames.addElement("Phone");
            columnNames.addElement("Date");
            columnNames.addElement("Amount");

          DefaultTableModel model = new DefaultTableModel(rowData, columnNames);
          table = new JTable(model);

        scrollTable = new JScrollPane(table);
        scrollTable.setBounds(23, 77, 769, 242);
        scrollTable.setViewportView(table);

        contentPane.add(scrollTable);

        button.addActionListener(this);

public void actionPerformed(ActionEvent e)
    {
         else if (e.getActionCommand().equals("import"))
        {
            JFileChooser file = new JFileChooser();
            int i = file.showOpenDialog(this);

            if(i == JFileChooser.APPROVE_OPTION)
            {
                File f = file.getSelectedFile();
                String filePath = f.getPath();

                try
                {

                    ObjectInputStream input = new ObjectInputStream(new FileInputStream(filePath));
                    Vector vectorData = (Vector)input.readObject();
                    data = new DefaultTableModel(vectorData, columnNames);
                    table.setModel(data);
                    }
}
}
}

问题是,当我导入表的数据时,GUI中的Jtable没有变化,我怎样才能显示它?

1 个答案:

答案 0 :(得分:0)

要通知您的JTable有关数据的更改,请使用 tableModel.fireTableDataChanged()

table.setModel(data);
//add
data.fireTableDataChanged();