Comment faire un JTable
non-modifiable? Je ne veux pas que mes utilisateurs puissent modifier les valeurs dans les cellules en double-cliquant sur eux.
Toute aide serait grandement appréciée.
Merci.
Comment faire un JTable
non-modifiable? Je ne veux pas que mes utilisateurs puissent modifier les valeurs dans les cellules en double-cliquant sur eux.
Toute aide serait grandement appréciée.
Merci.
Vous pouvez remplacer la méthode isCellEditable et à mettre en œuvre que vous le souhaitez par exemple:
//instance table model
DefaultTableModel tableModel = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
//all cells false
return false;
}
};
table.setModel(tableModel);
ou
//instance table model
DefaultTableModel tableModel = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
//Only the third column
return column == 3;
}
};
table.setModel(tableModel);
Vous pouvez utiliser un TableModel.
Définir une classe comme ceci:
public class MyModel extends AbstractTableModel{
//not necessary
}
en fait isCellEditable est false par défaut de sorte que vous pouvez omettre. (voir: http://docs.oracle.com/javase/6/docs/api/javax/swing/table/AbstractTableModel.html)
Ensuite, utilisez setModel méthode de votre JTable.
JTable myTable = new JTable();
myTable.setModel(new MyModel());
Si vous êtes à la création de la TableModel automatiquement à partir d'un ensemble de valeurs (avec "new JTable(vecteur, Vecteur)"), c'est peut-être plus facile de supprimer des éditeurs de colonnes:
JTable table = new JTable(my_rows, my_header);
for (int c = 0; c < table.getColumnCount(); c++)
{
Class<?> col_class = table.getColumnClass(c);
table.setDefaultEditor(col_class, null); // remove editor
}
Sans éditeurs, les données seront pas modifiables.
créer de nouveaux DefaultCellEditor classe :
public static class Editor_name extends DefaultCellEditor {
public Editor_name(JCheckBox checkBox) {
super(checkBox);
}
@Override
public boolean isCellEditable(EventObject anEvent) {
return false;
}
}
et l'utilisation setCellEditor :
JTable table = new JTable();
table.getColumn("columnName").setCellEditor(new Editor_name(new JCheckBox()));
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.