Java表 - 设置可编辑列而不可编辑

时间:2018-04-25 14:58:23

标签: swing jtable imageicon defaulttablemodel

我有一个有2列的JTable。 第一列是存储ImageIcons,第二列是存储String。

我想将第二列设置为可编辑但不是第一列。

完整代码: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 :(得分:0)

解决!

问题是data[count][1] = imatge;。 我在表格中添加了一个文件,JTable中的文件是不可编辑的。

要解决我已将data[count][1] = imatge;替换为data[count][1] = imatge.getName();的问题,现在它已成为字符串且可以编辑。