Java 表格 - 设置可编辑列和不可编辑列
Java Tables - Set editable columns and not editable
我有一个包含 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
方法,这使得第二列不可编辑。不知道怎么解决。
已解决!
问题是data[count][1] = imatge;
。
我在 table 中添加了一个文件,而 JTable 中的一个文件不是 editable。
为了解决这个问题,我将 data[count][1] = imatge;
替换为 data[count][1] = imatge.getName();
,现在它是一个字符串并且是 editable。
我有一个包含 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
方法,这使得第二列不可编辑。不知道怎么解决。
已解决!
问题是data[count][1] = imatge;
。
我在 table 中添加了一个文件,而 JTable 中的一个文件不是 editable。
为了解决这个问题,我将 data[count][1] = imatge;
替换为 data[count][1] = imatge.getName();
,现在它是一个字符串并且是 editable。