如果改变已存在的JTable的大小?

解决方案 »

  1.   

    详细点:程序开始时生成一个JTable,在使用过程中可以改变JTable的单元格数量,比如删除一行或者一列...
      

  2.   

    这个当然可以了,你可以用removeRow方法来删除一行
      

  3.   

    今天我也碰到类似问题,动态插入一行。
    通常
    JTable table = new JTable(new AbstractTableModel派生类);假设object[][]行列分别为row和col。插入一行,如行数小于等于row,实质上是修改cell。
    若行数大于row,那么需要重新new object[][]
    二维数组,个人感觉效率比较差,但是还是可以实现。不知是否还有好的办法?
      

  4.   

    一般是使用dataModel 的。如果你觉得次次都new object比较麻烦,可以用ArrayList来记录,每次在ArrayList上add,delete就行了 void refreshTable() {
    try {
    int totalColumns = 10;
    int totoalRows = 10;
    String[][] myObjs = new String[totoalRows][totalColumns];
    TableModel dataModel = new AbstractTableModel() {
    public int getColumnCount() {
    return totalColumns;
    }
    public int getRowCount() {
    return myObjs != null ? myObjs.length : 0;
    }
    public String getColumnName(int columnIndex) {
    return colNames[columnIndex];
    }
    public Object getValueAt(int row, int col) {
    String obj = myObjs[row][col];
    Object returnVal = "";
    returnVal = myObjs[row][col];
    return returnVal;
    }
    };
    this.jTable1.setModel(dataModel);
    } catch(Exception ex) {
    System.out.println("=======================" + ex.getMessage() + "==========================");
    }
    }