你去看看基础的书好了,上面都有写的,DefaultTableModel 一般我用来填写数据才用,呵呵
//定义的
  String[] columns = {
    "test1","test2","test3"
  };
  Object[][] data = {
    {"a","a","a"},
        {"b","b","b"},
        {"c","c","c"}
  };
  private DefaultTableModel model=new DefaultTableModel(data, columns);
  private JTable jTable1 = new JTable(model);
//按纽事件
    model.addColumn("hhh");
    model.addColumn("ggg");
    jTable1.sizeColumnsToFit(-1);

解决方案 »

  1.   

    你刚才用的时候没有sizeColumnsToFit(-1),这个是jTable的一个bug,不过好象如果jtable没有初始数据的时候也不能加,这个我也不清楚
    up
      

  2.   

    supersunyi :
        
         用DefaultTableModel 了,似乎就不要在定义table 列数组和 table 数值数组了.
         
         定义数组的用法,我是知道的,我现在想用model动态的增加行数值.
      

  3.   

    这是一个DefaultTableModel 设置的代码:
    不知道你想要什么功能.class ComboBoxTableModel extends DefaultTableModel { Vector index = new Vector(); Vector delkbn = new Vector(); public Node getChange() { Node temp = new Node(); temp.getAttributes().put("index", index);
    temp.getAttributes().put("delkbn", delkbn); return temp;
    } protected Object[][] data = null; private String[] field = null; public ComboBoxTableModel() {
    } public ComboBoxTableModel(Object[][] o, String[] field) { super(o, field); data = o; this.field = field;
    }
                      //这是取值部分
    public Object getValueAt(int row, int column) { return data[row][column]; }
                      //这部分是设置单元格能否编辑
    public boolean isCellEditable(int row, int column) {
    String temp;
    temp = (String) getValueAt(0, 1);
    if (column == 0 || column == 2) {
    if (temp.equals("000")) {
    if ((row == 0 && column == 2)
    || (row == 0 && column == 0)) {
    return false;
    }
    } else {
    return true;
    }
    return true;
    }
    return false; }
                      //我这里用了向量,目的是比较特定列的内容的改变
    public void setValueAt(Object value, int row, int column) { data[row][column] = value; int i = -1; if (column == 2) { i = index.indexOf(String.valueOf(row)); switch (i) {
    case -1 : index.add(String.valueOf(row));
    delkbn.add(data[row][2]);
    break; default : delkbn.set(i, data[row][2]);
    break;
    } } fireTableCellUpdated(row, column);
    }
    }
      

  4.   

    如果要动态增加行值,新实例化一个DefaultTableModel 对象,将要数值放进去就可以了
    例如  String[] columns = {
        "test1","test2","test3"
      };
      Object[][] data = {
        {"a","a","a"},
            {"b","b","b"},
            {"c","c","c"}
      };
    tmodel1 = new ComboBoxTableModel(data, columns );
    table1.setModel(tmodel1);
    要变化的话:  String[] columns = {
        "test1","test2","test3"
      };
      Object[][] data = {
        {"a","a","a"},
            {"b","b","b"},
            {"c","c","c"},
            {"d","d","d"}  };
    tmodel1 = new ComboBoxTableModel(data, columns );
    table1.setModel(tmodel1);
    这样就增加一行
      

  5.   

    你的用法好像复杂化了,我看文档上直接用DefaultTableModel增加一行的
      

  6.   

    把Table放到一个JScrooPane中就行了,不用加上数据也能显示列的