我已编写以下代码将图像放入JTable中,但在图像的位置将图像的路径打印到数据上
DefaultTableModel dm = new DefaultTableModel(0, 0);
String header[] = new String[] { "Status", "Task Title", "Start",
"Pause", "Stop", "Statulses" };
dm.setColumnIdentifiers(header);
tblTaskList.setModel(dm);
ImageIcon imgStart = new ImageIcon(getClass().getResource("start.gif"));
ImageIcon imgStop = new ImageIcon("stop.png");
ImageIcon imgPause = new ImageIcon("pause.gif");
for (int count = 1; count <= 10; count++) {
Vector<Object> data = new Vector<Object>();
data.add(count);
data.add("Project Title" + count);
data.add(imgStart);
data.add(imgPause);
data.add(imgStop);
data.add("Status");
System.out.println("test :- " + count);
dm.addRow(data);
// tblTaskList.setModel(new DefaultTableModel(new Object[][] { {
// count, "title1", "start", "stop", "pause", "status" }, },
// new String[] { "status", "Task Title", "Start", "Stop",
// "Pause", "Status" }));
}
tblTaskList.getColumnModel().getColumn(0).setPreferredWidth(31);
tblTaskList.getColumnModel().getColumn(1).setPreferredWidth(346);
tblTaskList.getColumnModel().getColumn(2).setPreferredWidth(33);
tblTaskList.getColumnModel().getColumn(3).setPreferredWidth(31);
tblTaskList.getColumnModel().getColumn(4).setPreferredWidth(28);
tblTaskList.setBounds(93, 34, 614, 160);
frmTaskList.getContentPane().add(tblTaskList);
我尝试了3种不同的方法,但找不到合适的输出。建议我正确地做到这一点
答案 0 :(得分:4)
需要覆盖getColumnClass to Icon / ImageIcon.Class才能显示Icon / ImageIcon
答案 1 :(得分:1)
你又错过了一步,就是覆盖TableModel中的getColumnClass()
DefaultTableModel dTable= new DefaultTableModel(0, 0)
{
public Class getColumnClass(int column)
{
return getValueAt(0, column).getClass();
};
};
这将用它的orignal类图像替换图像路径