2015-05-25 4 views
0

Я работаю с качелями. У меня есть JTable с 8 столбцами и динамическими строками. 2-я колонка не редактируется, что мне понравилось в DefaultTableModel.Как отключить определенную ячейку в JTable?

static JComboBox combo1 = new javax.swing.JComboBox(new String[]{"Static","Project Variable", "External", "Output Variable"}); 
      ParametersTable.setModel(new  javax.swing.table.DefaultTableModel(
      parametersTableData, 
      new String[]{ 
       "S.No", "Parameters", "Parameter Type", "Static Value", "Variable Name", "Sheet Name", "Column Name", "Output Variable" 
      } 
      ) { 
Class[] types = new Class[]{ 
        java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class 
       }; 

       public Class getColumnClass(int columnIndex) { 
        return types[columnIndex]; 
       } 

       boolean[] canEdit = new boolean[]{ 
        true, false, true, true, true, true, true, true 
       }; 

       public boolean isCellEditable(int rowIndex, int columnIndex) { 
        return canEdit[columnIndex]; 
       } 
      }  
      ); 
      ParametersTable.getColumnModel().getColumn(2).setCellEditor(new DefaultCellEditor(combo1)); 

У меня есть в 3-й колонке, которая имеет значения static,project variable,external,output variable в JComboBox.

Предполагая, что существует 2 строки, поэтому, когда я выбираю тип параметра как static в первой строке, я хочу, чтобы этот конкретный cell (статическое значение) включался в этой конкретной строке и остальной части ячеек, которые необходимо отключить. Аналогично, когда я выбираю параметр Parameter как «Output Variable» во второй строке. Я хочу, чтобы эта конкретная ячейка (Output Variable) была включена в этой конкретной строке и остальной части ячеек, которые нужно отключить.

+0

Base вам решение для включения/выключения ячеек не в массиве, а значение 3-го столбца ... – MadProgrammer

+0

@MadProgrammer Есть ли способ для достижения этой функциональности. Можем ли мы отключить конкретную CELL в качелях? Если да, то посоветуйте мне, что очень помогает. –

+0

Да, используйте метод getVaueAt 'модели, чтобы получить значение для третьего столбца для данной строки и вернуть' boolean' на основе ваших правил для 'isCelLEditable' – MadProgrammer

ответ

2

Измените свой isCellEditable следующим образом.

public boolean isCellEditable(int rowIndex, int columnIndex) { 
    String comboValue = ParametersTable.getValueAt(rowIndex, 0).toString(); //0 is the column index where your combo box value available. 
    if(comboValue.equals("static")){ 
     return false; //The cell (row, column) will be non editable 
    } 
    return canEdit[columnIndex]; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^