我试图根据条件在某个列中放置一个图标,但所有get都是图像的链接。
这是如何启动表格代码的:
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);
答案 0 :(得分:2)
但所有得到的都是图片的链接:
然后这意味着您要在该列中存储文本。
我可以看到几个问题:
您的代码正在尝试阅读图片,但您需要在ImageIcon
中存储TableModel
。因此,您需要更改要使用的addRow(...)
语句:
addRow(..., new ImageIcon(image));
因此,您可以按照希望它们在表格中显示的顺序添加每个值。
当您修复上述语句时,看起来Icon将是addRow(...)
语句的第6个参数。但是,根据您的getColumnClass(...)
方法,图标位于第2列。这对你来说不是很奇怪吗?