就是在把数据库信息放在了JTable中,用户选择其中任何一条信息后单击“审核”按钮后,让该信息(也就是用户选中的这行中的单元格)不能编辑,表示用户选择的这条信息已经通过了,不能编辑了。 
哪位大侠帮帮忙???小弟很急。
能帮忙具体写写代码吗??谢谢了。 
我写了一下,但是没成功! 
希望大侠们帮帮忙!!!! 
if(e.getActionCommand().equals("审核")){ 
        boolean f=new MyTableModel().isCellEditable(rows,0);//调用 
         if(f==true){  ???????????判断好像出错了,不会判断 
              System.out.println("成功"); 
        }else{ 
            System.out.println("失败"); 
       } 
    } 
class MyTableModel extends DefaultTableModel{ 
  public boolean isCellEditable(int row, int column) { 
      row = table.getSelectedRow();  //得到用户选定的那一行 
      gb_h=table.getValueAt(row, 0).toString();  //得到用户选定的那一行的第一个字段值 
      gx_m=table.getValueAt(row, 1).toString();  //得到用户选定的那一行的第二个字段值 
      gd_h=table.getValueAt(row, 2).toString();  //得到用户选定的那一行的第三个字段值 
      gemail=table.getValueAt(row, 3).toString(); //得到用户选定的那一行的第四个字段值 
      return !(gb_h.equals(data[row][0])&&gx_m.equals(data[row][1])&&gd_h.equals(data[row][2])&&gemail.equals(data[row][3])); 
    } 
}

解决方案 »

  1.   

    通常的方法应该是给JTable加上MouseListener或是列选择的事件,在用户选定记录时获取该行的值,再判断这个值把“审核”按钮setEnabled到相应的状态table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
      public void valueChanged(ListSelectionEvent e) {
        row = table.getSelectedRow();  //得到用户选定的那一行 
          gb_h=table.getValueAt(row, 0).toString();  //得到用户选定的那一行的第一个字段值 
          gx_m=table.getValueAt(row, 1).toString();  //得到用户选定的那一行的第二个字段值 
          gd_h=table.getValueAt(row, 2).toString();  //得到用户选定的那一行的第三个字段值 
          gemail=table.getValueAt(row, 3).toString(); //得到用户选定的那一行的第四个字段值 
        if (......) //自己加判断条件
          btn.setEnabled(true);   //可以审核
        else
         btn.setEnabled(false);  //不可审核
      }
    });
      

  2.   

    boolean[] editables = new booelan[rows];
    if(e.getActionCommand().equals("审核")){
            editables[row] = false;
            // 接着将当前row编辑状态移除
        }
    class MyTableModel extends DefaultTableModel{
      public boolean isCellEditable(int row, int column) {
          return editables[row];
        }
    }
      

  3.   

      非常感谢你们给的代码。我想问问  一楼的,
    如果  btn.setEnabled(true);  //可以审核 
          btn.setEnabled(false);  //不可审核 
    就算把按钮设置成隐藏或者显示,可是用鼠标双击一下JTable中的单元格,照样可以进入编辑状态啊。
    我想可不可以选择“审核”按钮后,让选中的那行记录中所有单元格都不能编辑(就是用鼠标怎么单击双击都不能进入)这样可以实现吗?或者还有更好的办法吗??????    二楼的代码有点没大明白,可不可以再详细一下。
      

  4.   

    boolean[] editables = new booelan[rows]; //这里定义一个可编辑状态数组,每行对应一个数组元素,需要初始化为true,表示全部可编辑
    if(e.getActionCommand().equals("审核"))
    {
            editables[row] = false; // 设置当前审核的行编辑状态值为false,row是当前审核的行号
            // 接着将当前row编辑状态移除
    }
    class MyTableModel extends DefaultTableModel
    {
            public boolean isCellEditable(int row, int column)
            {
                    return editables[row]; // 返回对应行的可编辑状态
            }
    }
      

  5.   

    请问,怎么将 
            // 接着将当前row编辑状态移除 ?????????????、????
    能再帮忙写写代码吗?我刚学JAVA。
    帮帮忙,各位大侠。
      

  6.   


    6楼和8楼的大侠 // 接着将当前row编辑状态移除 
     
    这句话是说再把用户当前选定的行设置为true,表示可编辑吗???
      

  7.   

    getTable().getCellEditor().stopCellEditing(); // 这个方法可以将当前正编辑的cell移除编辑状态
    editables[rows] 这个就是保存编辑状态的变量,也许你不是按我说的方法做的,那得看你自己的了祝你好运