iscelleditable ejemplos editable celda java swing jtable

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.



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);