Come si fa a rendere non editabili tutte le celle di una JTable?
Come si fa a rendere non editabili tutte le celle di una JTable?
Maddalena... Perché proprio Iacchetti!...
Se non ricordo male devi crearti una classe che implementa TableModel e implemntare i vari metodi , fra cui boolean isCellEditable() e gli fai ritornare sempre false.
qui
trovi un tutorial per il TableModel
Lang=Java
Ambiente = Eclipse forever
Ubuntu & Win XP Pro
Io ho gia una tabella nella mia applicazione ed ho usato il DefaultTableModel, posso comunque effettuare il blocco dell'editing delle celle?
Maddalena... Perché proprio Iacchetti!...
No , devi crearti una classe tua che implementi TableModel ed usarla al posto del defaultTableModel .
Oppure se vuoi ti copia la classe defaultTablemodel e cambi il metodo isCellEditable(int row,int column) e gli fai ritornare sempre false
mentre quel metodo della classe DeafultTableModel ritorna sempre true
Ciauz
Lang=Java
Ambiente = Eclipse forever
Ubuntu & Win XP Pro
Scusa la mia ignoranza, ma sono un novellino di Java...
Cosa intenti per:
Grazie ancora per l'aiuto, mi rendo conto che non è facile aiutare uno che ancora ne capisce pochissimo...ti copia la classe defaultTablemodel e cambi il metodo isCellEditable(int row,int column) e gli fai ritornare sempre false
Maddalena... Perché proprio Iacchetti!...
up:quote:
Maddalena... Perché proprio Iacchetti!...
In pratica crei una tua classe che implementa TableModel o che estenda AbstractTableModel :
Una cosa del generecodice:import java.util.*; import javax.swing.table.*; public class CalendarioTableModel extends AbstractTableModel{ private Vector row,col; public CalendarioTableModel(Vector row,Vector col){ this.row=row; this.col=col; } public String getColumnName(int c) { return (String)col.get(c); } public Class getColumnClass(int c) { return ((Vector)row.get(0)).get(c).getClass(); } public int getColumnCount() { return col.size(); } public int getRowCount() { return row.size(); } public Object getValueAt(int r, int c) { return (String)((Vector)row.get(r)).get(c); } public void setValueAt(Object obj, int r, int c) { ((Vector)row.get(r)).setElementAt(obj,c); } public boolean isCellEditable(int r, int c) { return false; } }
Lang=Java
Ambiente = Eclipse forever
Ubuntu & Win XP Pro
Grazie, se non ci riesco adesso meglio che mi dia all'ippica!
:metallica
Maddalena... Perché proprio Iacchetti!...
Scusate ma visto che siete entrati in discorso come faccio a settare la larghezza delle colonne nell'Abstract Table quindi senza che questa me lo faccia in automatico
Ti posto il codice che ho usato per creare la mia tabella
//Creo la tabella dell'ordine
final Object[] intestazioneTab = {"Nome File", "Formato", "Tipo Carta", "Copie"};
model = new MyDefaultTableModel(intestazioneTab, 0);
ordine = new JTable(model);
//Imposto attributi per le colonne della tabella
TableColumn ColFile = ordine.getColumn("Nome File");
DefaultTableCellRenderer ColFileRenderer = new DefaultTableCellRenderer();
ColFile.setPreferredWidth(110);
TableColumn ColFormato = ordine.getColumn("Formato");
DefaultTableCellRenderer ColFormatoRenderer = new DefaultTableCellRenderer();
ColFormatoRenderer.setHorizontalAlignment(JLabel.C ENTER);
ColFormato.setCellRenderer(ColFormatoRenderer);
ColFormato.setPreferredWidth(85);
TableColumn ColTipo = ordine.getColumn("Tipo Carta");
DefaultTableCellRenderer ColTipoRenderer = new DefaultTableCellRenderer();
ColTipoRenderer.setHorizontalAlignment(JLabel.CENT ER);
ColTipo.setCellRenderer(ColTipoRenderer);
ColTipo.setPreferredWidth(60);
TableColumn numbersColumn = ordine.getColumn("Copie");
DefaultTableCellRenderer numberColumnRenderer = new DefaultTableCellRenderer();
numberColumnRenderer.setHorizontalAlignment(JLabel .CENTER);
numbersColumn.setCellRenderer(numberColumnRenderer );
numbersColumn.setPreferredWidth(40);
Maddalena... Perché proprio Iacchetti!...