Подтвердить что ты не робот

Как сделать jtable не редактируемой в java?

Я создал функцию, которая загружает данные в JTable. Все работает отлично, за исключением того, что все ячейки в этой таблице доступны для редактирования. Кстати, я использовал defaultTableModel для модели таблицы. Я делаю это в среде Netbeans IDE. Пожалуйста помоги. Здесь мой код:

private void updateTable(String searchText){

    if(searchText != null)
        this._sqlCmd = this._sqlCmd + " WHERE "+columnCombo.getSelectedItem()+" LIKE '%"+searchText+"%'";
    jTable1.setSurrendersFocusOnKeystroke(true);
    table = (javax.swing.table.DefaultTableModel) jTable1.getModel();  

    try{
        table.setRowCount(0);
    }catch(Exception e){}

    try {
        ResultSet rs = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY).executeQuery(_sqlCmd);
        while (rs.next()){
            Object[] data = new Object[numOfCols];
            for(int i=0; i<data.length; i++){
                data[i] = rs.getObject(i+1);
            }
            table.addRow(data);
        }
        table.fireTableDataChanged();


    } catch (SQLException ex) {
        Logger.getLogger(FindContactGrid.class.getName()).log(Level.SEVERE, null, ex);
    } 
}
4b9b3361

Ответ 1

 private TableModel model = new DefaultTableModel(data, columnNames)
  {
    public boolean isCellEditable(int row, int column)
    {
      return false;//This causes all cells to be not editable
    }
  };
  private JTable table = new JTable(model);

Под ред. Если вы делаете это в дизайнере Netbeans IDE, выполните следующие действия:

  • Выберите форму, на которой размещается JTable
  • На панели навигации разверните JScrollPane и щелкните правой кнопкой мыши JTable и выберите Настроить код, как показано ниже:

Navigator Pane

  • В настройщике кода выберите второй снимок и выберите настраиваемое свойство. Это позволяет редактировать определение кода DefaultTableModel.
  • Теперь вставьте это: {public boolean isCellEditable(int row, int column){return false;}} перед последним закрытием blacket );

Ваша окончательная настройка должна выглядеть так, как показано ниже:

  • Нажмите ok для сохранения - и выполненная работа.

Code Customizer

Ответ 2

Если вы используете DefaultTableModel, вы можете переопределить метод isCellEditable и реализовать его при построении GUI:

table.setModel(new DefaultTableModel() {

    @Override
    public boolean isCellEditable(int row, int column) {
       return false;
    }
});

Ответ 3

Как и другие, вы должны создать свой собственный DefaultTableModel и переопределить isCellEditable. Чтобы использовать его в дизайнере Netbeans:

  • Щелкните правой кнопкой мыши на таблице.
  • Свойства → Код
  • В Код пользовательского создания добавьте следующее: new JTable(new MyModel()) (при условии, что вы создаете класс MyModel расширяет AbstractTableModel)

Ответ 4

Использование Netbeans ДРУГОЙ ПУТЬ возможно. если вы хотите продолжить использование модели таблицы по умолчанию, как указано в OP Нет необходимости создавать новую модель таблицы, если вы этого не хотите.

  • Выберите свойства JTable

  • Выберите поле "TableModel" в "свойствах", которое откроет другой DialogBox.

  • Оттуда можно изменить поле "редактируемое" для каждого столбца.

Не знаю, из какой версии это начинается, но я использую Netbeans 7.2

Ответ 5

Попробуйте это

JTable table = new JTable();
table.setEnabled(false);