java - ejemplos - Cómo hacer una JTable no editable
iscelleditable java ejemplos (7)
Puede anular el método isCellEditable e implementarlo como desee, por ejemplo:
//instance table model
DefaultTableModel tableModel = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
//all cells false
return false;
}
};
table.setModel(tableModel);
o
//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);
Nota para si su JTable desaparece
Si su JTable
está desapareciendo cuando usa esto, es más probable porque necesita usar el constructor DefaultTableModel(Object[][] data, Object[] columnNames)
lugar.
//instance table model
DefaultTableModel tableModel = new DefaultTableModel(data, columnNames) {
@Override
public boolean isCellEditable(int row, int column) {
//all cells false
return false;
}
};
table.setModel(tableModel);
¿Cómo hacer que una JTable
no sea editable? No deseo que mis usuarios puedan editar los valores en las celdas haciendo doble clic en ellos.
Puedes usar un TableModel
.
Defina una clase como esta:
public class MyModel extends AbstractTableModel{
//not necessary
}
en realidad, isCellEditable()
es false
de manera predeterminada, por lo que puede omitirlo. (ver: http://docs.oracle.com/javase/6/docs/api/javax/swing/table/AbstractTableModel.html )
Luego use el método setModel()
de su JTable
.
JTable myTable = new JTable();
myTable.setModel(new MyModel());
Si está creando TableModel automáticamente a partir de un conjunto de valores (con "nueva JTable (Vector, Vector)"), quizás sea más fácil eliminar editores de las columnas:
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
}
Sin editores, los datos no serán editables.
crear una nueva clase DefaultCellEditor:
public static class Editor_name extends DefaultCellEditor {
public Editor_name(JCheckBox checkBox) {
super(checkBox);
}
@Override
public boolean isCellEditable(EventObject anEvent) {
return false;
}
}
y use setCellEditor:
JTable table = new JTable();
table.getColumn("columnName").setCellEditor(new Editor_name(new JCheckBox()));
solo agrega
table.setEnabled(false);
Funciona bien para mí.
Usé esto y funcionó: es muy simple y funciona bien.
JTable myTable = new JTable();
myTable.setEnabled(false);
table.setDefaultEditor(Object.class, null);