Как настроить запрет на редактирования столбца в таблице - Java
Формулировка задачи:
Как настроить запрет на редактирования столбца в таблице.
Или в классе где создается дефолтная модель таблицы ?
Или в классе где описываю фрейм, в котрый будет встроена таблица?
Покажите, пожалуйста пример.
Решение задачи: «Как настроить запрет на редактирования столбца в таблице»
textual
Листинг программы
package com.trainigcenter.CarsOfRentV3.frames; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.Vector; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; /** * Создание модели таблиц * * @DefaultTableModel defaultModel - создаем модель таблицы по умолчанию * @ResultSetMetaData rsmd; - хранение служебной информации о таблице for (int i * = 1; i <= rsmd.getColumnCount(); i++) - этот цикл, * обрабатывает таблицу, получая имена полей(столбцов) данной * таблицы addColumn() - это метод добавлет в модель таблицы, * только шапку таблицы while * * @(rs.next()) { - запускаем * цикл, который обрабатывает столбцы текущей строки в * таблице Vector <String> v - создаем коллекцию класса * Vector v.add(rs.getString(i)) - обрабатываем полученную * строку и затем, значение каждого столбца помещаем в свою * позицию текущей строки обрабатываемой таблицы * defaultModel.addRow(v) - добавление строку в модель * таблицы ( модель по умолчанию) После того, как цикл while * пройдет всю обрабатываемую таблицу и модель таблицы будет * заполнена, она с помощью метода setModel, регистрируется и * далее этот объект можно помещать во нужный фрейм. @ @ * this.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); - * позволяет растягивать столбцы вручную * @setAutoResizeMode(AUTO_RESIZE_ALL_COLUMNS); - автоматическая подстройка ширины столбца * в зависимости от ширины названия поля * public boolean isCellEditable(int row, int column) - запрет на редактирование 1-го столбца в таблице * @ @author IT * */ public class MyTable extends JTable { private static final long serialVersionUID = 1L; public MyTable(ResultSet rs) { super(); DefaultTableModel defaultModel = new DefaultTableModel(); ResultSetMetaData rsmd; try { rsmd = rs.getMetaData(); for (int i = 1; i <= rsmd.getColumnCount(); i++) { defaultModel.addColumn(rsmd.getColumnName(i)); } while (rs.next()) { Vector<String> v = new Vector<String>(); for (int i = 1; i <= rsmd.getColumnCount(); i++) { v.add(rs.getString(i)); } defaultModel.addRow(v); } this.setModel(defaultModel); setAutoResizeMode(AUTO_RESIZE_ALL_COLUMNS); } catch (SQLException ex) { System.out.println(" Ошибка в классе MyTable " + ex); } } @Override public boolean isCellEditable(int row, int column) { if(column == 0) { return false; } return true; } }