Как настроить запрет на редактирования столбца в таблице - 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;
    }
    
    
}

Оцени полезность:

7   голосов , оценка 4.143 из 5