问了一个没分的问题  得到了两位朋友的回答  我的问题是这样的JTable组件 我看到的好像只有在声明的时候才能在构造方法里设置table里的数据什么的如果我想不在实例化对象的时候就把数据加进去 而是想在实例化对象后再加数据 有什么方法? 谢谢了!一位朋友的回答是 扩展AbstractTableModel,然后将数据和你的TableModel挂钩,你的TableModel和JTable挂钩我在api里看到了        TableModel myData = new MyTableModel(); 
        JTable table = new JTable(myData);
应该是你的TableModel和JTable挂钩  可是数据和TableModel挂钩 怎么实现?哪位朋友再来回答一下? 谢谢啦!

解决方案 »

  1.   

    写了个简单的例子,具体是怎么工作的,你就自己看看吧import javax.swing.table.AbstractTableModel;public class MyTableModel extends AbstractTableModel {
        private String[] columnNames = {"ID", "Name", "Age", "Married"};    private Object[][] data = {
            { "P1001", "Wang", "29", new Boolean(true) },
            { "P1002", "Li", "20", new Boolean(false) },
            { "P1003", "Liu", "24", new Boolean(false) },
            { "P1004", "Zhang", "32", new Boolean(true) },
            { "P1005", "Wu", "19", new Boolean(false) } };    public int getColumnCount() {
          return columnNames.length;
        }    public int getRowCount() {
          return data.length;
        }    public String getColumnName(int column) {
          return columnNames[column];
        }    public Object getValueAt(int row, int col) {
          return data[row][col];
        }    public Class getColumnClass(int c) {
          return getValueAt(0, c).getClass();
        }   public boolean isCellEditable(int row, int col) {
          if (col < 2) {
            return false;
          } else {
            return true;
          }
        }    public void setValueAt(Object value, int row, int col) {
          data[row][col] = value;
          fireTableCellUpdated(row, col);
        }
    }使用如下JTable table = new JTable(new MyTableModel());
    JScrollPane scrollPane = new JScrollPane(table);
    add(scrollPane, BorderLayout.Center);
    在MyTableModel中的数据你可以在程序运行时赋值