Как сделать недоступное для редактирования JTable

Как сделать a JTable недоступный для редактирования? Я не хочу, чтобы мои пользователи смогли отредактировать значения в ячейках путем двойного щелчка по ним.

91
задан ROMANIA_engineer 26 November 2017 в 17:54
поделиться

2 ответа

Можно использовать 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());
20
ответ дан 24 November 2019 в 06:40
поделиться

Вы можете переопределить метод 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);
143
ответ дан 24 November 2019 в 06:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: