JTable中每一行有一個checkbox,點選以后這一行顏色變灰(可以是字體顏色,背景顏色也可以)      然后這一行的某些列不能編輯     這個怎么實現?  給思路也行   先謝了哈  在線等

解决方案 »

  1.   

    改颜色是 tablecellrender.setBackColor()不可用是重写  DefaultTableModel里面的方法isCellEditable(int row,int col){return col!=2;} 
      

  2.   

    可是這樣設置完成后  如果我的那行要是刪除掉了   是不是這個效果 也一樣存在于table中
      

  3.   

    你可以写个数组存贮0和1。对应table中行号。
    创建表格时有几行数组就有多大,然后初始为1.
    如果你选择了这一行为true,哪么数组相应为0。
    class RowRenderer extends DefaultTableCellRenderer {
        private int[] r;    private int count = 0;    private List array = new ArrayList();    public RowRenderer(int[] r) {
    this.r = r;
    for (int i = 0; i < r.length; i++) {
        if (r[i] == 0) {
    array.add(new Integer(i));
        }
    }
    System.out.println();
        }    public Component getTableCellRendererComponent(JTable t, Object value,
        boolean isSelected, boolean hasFocus, int row, int column) {
    Iterator it = array.iterator();
    while (it.hasNext()) {
        Integer n = (Integer) it.next();
        if (row == n.intValue()) {
    setForeground(Color.lightGray);
    // setBackground(Color.gray);
    break;
        } else if (row % 2 == 0) {
    setForeground(t.getForeground());
    setBackground(new Color(191, 214, 248));
        } else {
    setForeground(t.getForeground());
    setBackground(new Color(255, 255, 255));
        }
        if (!t.getValueAt(row, 18).equals("")
        && t.getValueAt(row, 18) != null) {
    setForeground(new Color(249, 102, 157));
    // setBackground(new Color(252,205,224));
        } }
    return super.getTableCellRendererComponent(t, value, isSelected,
    hasFocus, row, column);
        }
    }