看看jdk/demo/jfc/...
那里的参考一下.我们的程序应该解决了这个问题.我没有仔细看过,你的代码没有耐心看啊,jfc下面的示例讲解的很清楚.

解决方案 »

  1.   


    直接用 DefaultTableModel 即可,这个类有成员方法addRow(),通过这个方法可以动态增加行,无需手动刷新。//Test.java
    import javax.swing.*;
    import javax.swing.table.*;
    import java.awt.*;
    import java.awt.event.*;import java.util.Vector;public class Test implements ActionListener
    {
      JButton add, delete;
      JTable table;
      DefaultTableModel tableModel;
      public Test()
      {
      }  public JPanel createPanel()
      {
        Vector columnNames;
        columnNames = new Vector();
        // 两列
        columnNames.add("column 0");
        columnNames.add("column 1");    tableModel = new DefaultTableModel(new Vector(),columnNames);
        table = new JTable(tableModel);
        JPanel p = new JPanel();
        p.setLayout(new BorderLayout());
        JScrollPane sp = new JScrollPane(table);
        sp.setPreferredSize(new Dimension(200, 200));
        p.add(sp, BorderLayout.NORTH);    JPanel buttonPanel = new JPanel();
        add = new JButton("Add");
        add.setName("add");
        add.addActionListener(this);
        buttonPanel.add(add);    delete = new JButton("Delete");
        delete.setName("delete");
        delete.addActionListener(this);
        buttonPanel.add(delete);
        p.add(buttonPanel);    return p;
      }  public void actionPerformed(ActionEvent e)
      {
        if (e.getSource() == add){
          String row[] = new String[2];
          row[0] = "";
          row[1] = "";
          tableModel.addRow(row);
        } else if (e.getSource() == delete){
          int rowNum = table.getSelectedRow();
          if (rowNum < 0){ //remove 最后一行
           if(table.getRowCount() > 0)
             tableModel.removeRow(table.getRowCount() - 1);
          } else {
            tableModel.removeRow(rowNum);
          }
        }
      }  public static void main(String[] args)
      {
        JFrame frame = new JFrame();
        frame.getContentPane().add(new Test().createPanel());
        frame.pack();
        frame.show();
      }
    }
      

  2.   

    所谓刷新即是重新载入数据到JTable而已。
    先setRowCount(0);清空表格
    再addRow(Object[] rowData);重新载入数据就可以完成刷新了