我试图根据条件将图标放在特定的列中,但获得的只是图像的链接。
这就是启动表代码的方式:
DefaultTableModel model = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
@Override
public Class<?> getColumnClass(int column) {
switch (column) {
case 0:
case 1:
return Integer.class;
case 2:
return ImageIcon.class;
default:
return Object.class;
}
}
};
然后根据条件(完成(尚未开始)-进行中)从数据库中填充表:
model.addColumn("Phases");
model.addColumn("Date de début estimée(aaaa/mm/jj)");
model.addColumn("Date de début réelle(aaaa/mm/jj)");
model.addColumn("Date de fin estimée(aaaa/mm/jj)");
model.addColumn("Date de fin réelle(aaaa/mm/jj)");
model.addColumn("Status");
model.addColumn("Tendance");
ArrayList<String> name = new ArrayList<String>();
ArrayList<String> last_name = new ArrayList<String>();
String status = null;
String tendance = null;
byte[] Image = null;
// ImageIcon image2 = new ImageIcon("C:\\Users\\badr\\Documents\\NetBeansProjects\\UPLINE_GROUP\\src\\upline_group\\Ok-48.png");
Date estimated_end_date = null;
Date real_end_date = null;
try {
String sql = "select * from task WHERE id_project='" + id_project1 + "' ORDER BY nom_task ASC";
PST = conn.prepareStatement(sql);
RS = PST.executeQuery();
while (RS.next()) {
try {
String sql2 = "select * from image ";
PST2 = conn2.prepareStatement(sql2);
RS2 = PST2.executeQuery();
while (RS2.next()) {
if (RS.getString("real_start_date") == null && RS.getString("real_end_date") == null) {
status = "0(Non Démarrée)";
//tendance = "0(Non Démarrée)";
Image = RS2.getBytes("non");
}
if (RS.getString("real_start_date") != null && RS.getString("real_end_date") == null) {
status = "1(en cours)";
// tendance = "1(en cours)";
Image = RS2.getBytes("cours");
}
if (RS.getString("real_end_date") != null) {
status = "2(Terminé)";
// tendance = "2(Terminé)";
Image = RS2.getBytes("fini");
}
}
} catch (Exception e) {
System.err.println(e);
}
estimated_end_date = RS.getDate("estimated_end_date");
real_end_date = RS.getDate("real_end_date");
model.addRow(new Object[]{RS.getString("nom_task"), RS.getDate("estimated_start_date"), RS.getDate("real_start_date"), estimated_end_date, real_end_date, status,Image});
}
} catch (Exception e) {
System.err.println(e);
}
jTable1.setModel(model);
最佳答案
但是所有获得的都是图像的链接:
这意味着您将文本存储在该列中。
您有几个问题,我可以看到:
您的代码正在尝试读取图像,但是您需要在ImageIcon
中存储TableModel
。因此,您需要更改您的addRow(...)
语句以使用:
addRow(..., new ImageIcon(image));
因此,您可以按希望它们在表中显示的顺序添加每个值。
修复以上语句后,图标将成为
addRow(...)
语句的第六个参数。但是,根据您的getColumnClass(...)
方法,图标位于2列中。这对您来说并不奇怪吗?