只用keyReleased试试:
public void keyReleased(KeyEvent ke)
{
  if (ke.isActionKey())
  {
    String keyMeg = "Sorry, You can not modify the data in the table!";
    JOptionPane keyAct = new JOptionPane();
    keyAct.showMessageDialog(gui,keyMeg);
    refresh();
  }}

解决方案 »

  1.   

    namowen(寒号不已):谢谢回复。不行!试过了。就没有解决方案吗?救命啊!
      

  2.   

    继承DefaultTableModel,把public boolean isCellEditable(int rowIndex, int columnIndex)函数改成如此:
    public boolean isCellEditable(int rowIndex, int columnIndex)
    {
       return false;
    }
    在用继承的类对象替换掉TTable中的TableModel对象就可以了。
      

  3.   

    hello_wyq(半瓶墨水) :谢谢回复。问题是我不是针对某一个cell而是整个表呀。
      

  4.   

    hello_wyq(半瓶墨水) 的方法就是针对整个表的,给你个例子,把canEditCell设置成false就行了,或者直接返回false,简单写就是只覆盖isCellEditable这个方法,
    public class AblTableModel extends DefaultTableModel
    {
      String data [][];
     // String columnNames[];
      int rowCount;
      boolean canEditCell = false;  public AblTableModel()
      {
        super();
      }  public void setData(String data[][],String columnNames[])
      {
         //this.data = data;
        // this.columnNames = colunmNames;
         super.setDataVector(data,columnNames);
      }  public void setData(Vector dataVector,String colNum[])
      {
        rowCount = dataVector.size();
        data = new String[rowCount][colNum.length];
        for(int i = 0; i < rowCount; i++)
        {
          AblDataModel dataModel = (AblDataModel)dataVector.elementAt(i);
          for(int j = 0; j < colNum.length; j++)
          {
            data[i][j] = (String)dataModel.getMemberAt(j);
          }
        }
        super.setDataVector(data,colNum);
        // this.data = data;
      }
       /*public void addRow(Object row[])
       {
         super.addRow(row);
       }*/
      public void setColumnNames(String columnNames[])
      {
        // this.columnNames = columnNames;
         super.setColumnIdentifiers(columnNames);
         super.setColumnCount(columnNames.length);
      } /* public void setRowCountAbl(int rowCount)
      {
         this.rowCount = rowCount;
         super.setRowCount(rowCount);
      }*/  public void setCanEditCell(boolean canEditCell)
      {
         this.canEditCell = canEditCell;
      }  public String getColumnName(int column)
      {
        return super.getColumnName(column);
      }  public int getColumnCount()
      {
        /**@todo: implement this javax.swing.table.AbstractTableModel abstract method*/
         //return data[0].length;
         return super.getColumnCount();
     }
      public Object getValueAt(int parm1, int parm2)
      {
        /**@todo: implement this javax.swing.table.AbstractTableModel abstract method*/
       // if(super.getValueAt(parm1,parm2) instanceof Boolean)    //{
          //return (Boolean)(super.getValueAt(parm1,parm2));
          //return new Boolean(true);
       // }
       // else
         return super.getValueAt(parm1,parm2);
      }
     /* public int getRowCount()
      {
        /**@todo: implement this javax.swing.table.AbstractTableModel abstract method*/
       //  return this.rowCount;
     // }  /*public void setValueAt(String value,int row,int column)
      {
         data[row][column]=value;     fireTableChanged(new TableModelEvent(this,row,row,column));
      }*/  public boolean isCellEditable(int row,int col){return this.canEditCell;}
      //public Class getColumnClass(int c){return getValueAt(0,c).getClass();}
    }