Таблицы Java - Установите редактируемые столбцы и не редактируемые - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть JTable с 2 столбцами.Первый столбец предназначен для хранения ImageIcons, а второй - для хранения строки.

Я хочу установить редактируемый второй столбец, но не первый.

Полный код: https://pastebin.com/7qge1PVc

Вот пример моего кода:

File[] files = chooser.getSelectedFiles(); //Image files array
String[] columnNames = {"Image", "Description"};
Object[][] data = new Object[files.length][2]; //To fill with images and descriptions
int count = 0;

for(File imatge: files){
    if(accept(imatge)){
        imgBanknote = new ImageIcon( new ImageIcon(imatge.getAbsolutePath()).getImage().getScaledInstance(150, 120, Image.SCALE_SMOOTH));
        data[count][0] = imgBanknote;
        data[count][1] = imatge;
        count++;
    }
}

DefaultTableModel model = new DefaultTableModel(data, columnNames){
    //  Returning the Class of each column will allow different
    //  renderers to be used based on Class
    @Override
    public Class getColumnClass(int column) {
        return getValueAt(0, column).getClass();
    }
    @Override
    public boolean isCellEditable(int row, int column){
        return column != 0;
    }

};

taula.setModel(model); //Set model to JTable
taula.setPreferredScrollableViewportSize(taula.getPreferredSize());

Проблема в том, что getColumnClass метод, который я использую для визуализации изображения, делает второй столбец недоступным для редактирования.Я понятия не имею, как решить.

1 Ответ

0 голосов
/ 26 апреля 2018

Решено!

Проблема data[count][1] = imatge;.Я добавлял файл в таблицу, и файл в JTable не редактируется.

Чтобы решить проблему, я заменил data[count][1] = imatge; на data[count][1] = imatge.getName();, теперь это строка и ее можно редактировать.

...