Как сделать 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);
}
}
Ответы
Ответ 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);