就是在把数据库信息放在了JTable中,用户选择其中任何一条信息后单击“审核”按钮后,让该信息(也就是用户选中的这行中的单元格)不能编辑,表示用户选择的这条信息已经通过了,不能编辑了。
哪位大侠帮帮忙???小弟很急。

解决方案 »

  1.   

    一个简单的例子:
    import java.awt.*;import javax.swing.*;
    import javax.swing.table.DefaultTableModel;public class MyTable extends JFrame{

    public MyTable() {
    this.setLayout(new BorderLayout());
    this.setSize(new Dimension(400,300));
    final String[][] data = new String[][]{
    {"1","passed"},
    {"2","failed"},
    {"3","passed"},
    {"4","unknown"},
    };
    String[] columnNames =  new String[]{"ID","Status"};
    DefaultTableModel model = new DefaultTableModel(data,columnNames){
    @Override
    public boolean isCellEditable(int row, int column) { 
    return !("passed".equals(data[row][1])); 

    };
    JTable table = new JTable();
    table.setModel(model);
    this.add(table, BorderLayout.NORTH);
    this.setVisible(true);
    }
    public static void main(String[] args){
    MyTable mt = new MyTable();
    }}
      

  2.   

    public boolean isCellEditable(int row, int column) { 
                    return !("passed".equals(data[row][1])); 
                } 
    这个方法不是要继承JTable并且实现该方法吗??
    里面的return语句表示什么意思啊??我是想让用户选择其中任何一条信息后单击“审核”按钮后,让该信息不能编辑。
      

  3.   


    能帮忙具体写写代码吗??谢谢了。
    我写了一下,但是没成功!
    希望大侠们帮帮忙!!!!
    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])); 
        }
    }
      

  4.   

    我的妈,2008年的帖子,现在都2011年了,还是说一下吧。
    boolean f=new MyTableModel().isCellEditable(rows,0);//调用
    应该不能这样写吧。
    DefaultTableModel 你知道吧,里面的一个方法isCellEditable是干什么的你也应该知道吧,其实你每一次点击table中的某一行程序都会运行这个方法,楼主你要点击“审核”之后才能使这一行能编辑,那么就是说你之前已经点击并选中了table中的某一行数据了,这必定是没办法实现改行可编辑的功能了。
    那怎么办呢?
    你想办法能在点击“审核”这个按钮之前抢先改变isCellEditable中的false返回条件。
    我知道我说的很模糊,但我就是这样处理的。我想你一定早就解决这个问题了吧!