Leggere l'osservazione di Kleopatra (la sua seconda volta ha suggerito di dare un'occhiata a javax.swing.JXTable, e ora mi dispiace non averlo guardate la prima volta :)) Vi suggerisco di seguire il link
Ho cercato un asnwer e ho combinato diverse risposte alla mia soluzione: (comunque, non sicuro per tutte le soluzioni, ma comprensibile e veloce, anche se io consiglio di guardare il link sopra)
Puoi tenerlo più flessibile per impostare quale colonna è modificabile o non più tardi, ho usato questo per exmaple:
columnsEditable=new ArrayList<Integer>();
table=new JTable(new DefaultTableModel(){
@Override
public boolean isCellEditable(int row, int col) {
if(columnsEditable.isEmpty()){
return false;
}
if(columnsEditable.contains(new Integer(col))){
return true;
}
return false;
}
});
E ho usato questa funzione per impostare modificabile o meno:
public void setColumnEditable(int columnIndex,boolean editable){
if(editable){
if(!columnsEditable.contains(new Integer(columnIndex))){
columnsEditable.add(new Integer(columnIndex));
}
}else{
if(columnsEditable.contains(new Integer(columnIndex))){
columnsEditable.remove(new Integer(columnIndex));
}
}
}
Nota: naturalmente è necessario definire columnsEditable e JTable tabella globale in questa classe:
private JTable table;
private ArrayList<Integer> columnsEditable;
Nota 2 : per impostazione predefinita tutte le colonne non sono modificabili, ma questo è il mio comportamento desiderato. Se vuoi qualcosa di diverso, aggiungi tutte le colonne a columnsEditable o cambia il comportamento completamente (fai in modo che ArrayList non sia mai colonneNonEditable). Per quanto riguarda l'osservazione di Kleopatra: è meglio non usare questo ultimo suggerimento (ma dipende dal modello di tavolo usato e da ciò che si fa nel resto del programma).
fonte
2011-12-12 16:22:21
errato - a) non esiste alcun metodo è Editabile ovunque b) TableColumn non ha alcuna nozione di modificabilità per tutti c) TableCell non esiste. Corretto sarebbe _isCellEditable_ sull'implementazione TableModel o su JTable - -1 per la scarsità – kleopatra