Как сделать a JTable
недоступный для редактирования? Я не хочу, чтобы мои пользователи смогли отредактировать значения в ячейках путем двойного щелчка по ним.
Можно использовать TableModel
.
Определите такой класс:
public class MyModel extends AbstractTableModel{
//not necessary
}
на самом деле isCellEditable()
по умолчанию равен false
, поэтому Вы можете опустить его. (см.: http://docs.oracle.com/javase/6/docs/api/javax/swing/table/AbstractTableModel.html)
Затем используйте setModel()
метод вашего JTable
.
JTable myTable = new JTable();
myTable.setModel(new MyModel());
Вы можете переопределить метод isCellEditable и реализовать как хотите например:
//instance table model
DefaultTableModel tableModel = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
//all cells false
return false;
}
};
table.setModel(tableModel);
или
//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);
Примечание на случай, если ваш JTable исчезнет
Если ваш JTable
исчезает, когда вы его используете, это, скорее всего, потому, что вам нужно использовать DefaultTableModel (Object [] [] данные, вместо этого конструктор Object [] columnNames)
.
//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);