手动改变该列的长度后, 就正常了
于是我在设值后,加了一句:tableModel.fireTableStructureChanged();但是这样子,原来table的renderer和editor 都不见了
恳求高手拉一把!

解决方案 »

  1.   

    在修改问单元值后,要判断这个单元是否在编辑isEditing(),然后让它处于停止编辑状态。
      

  2.   

    再给你的JButton加个事件监听,actionperformed里调用stopCellEditing()将值写入就行
    例如:
    public boolean stopCellEditing()
    {
    JTable aTable = this.editingTable;
    int rowNo = aTable.getEditingRow();
    String flag = "";
    if (rowNo != -1)
    {
    flag = (String) aTable.getValueAt(rowNo, 0);
    }if (flag.indexOf("电压等级") > -1)
    {
    this.delegate.setValue(levelBox.getSelectedItem());
    }
    }
      

  3.   

    我现在将第一个Dialog的table model传给第二个, 代替原来的传整个JTable,
    但问题依旧。在第二个dialog中, tableModel.setValueAt(value, row, col);System.out.println("row = " + row);
    System.out.println("col = " + col);
    System.out.println("value = " + value);以上打印都对。但是回到第一个Dialog后, 打印出来的就还是原值, 而不是刚打印的新值。