Problem set icon in JTable cell from Model
Hello, i have problem how to set icon image in JTable Cell,
I have TableModel, and all data and column configured by this Model.
Here is :
Code:
public class TabelDataModel extends AbstractTableModel{
private List<ServerData> listServerData;
public TabelDataModel() {
listServerData = new ArrayList<>(0);
}
public void setData(List<ServerData> listServerData) {
this.listServerData = listServerData;
fireTableDataChanged();
}
@Override
public int getRowCount() {
return listServerData.size();
}
@Override
public int getColumnCount() {
return 6;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
switch(columnIndex) {
case 0 :
return listServerData.get(rowIndex).isDirectory();
case 1 :
return listServerData.get(rowIndex).getFileName();
case 2 :
return listServerData.get(rowIndex).getSize();
case 3 :
return listServerData.get(rowIndex).getDateModified();
case 4 :
return listServerData.get(rowIndex).getUser();
case 5 :
return listServerData.get(rowIndex).getPermissions();
default :
return null;
}
}
@Override
public String getColumnName(int column) {
switch(column) {
case 0 :
return "icon";
case 1 :
return "Filename";
case 2 :
return "Size (Byte)";
case 3 :
return "Date Modified";
case 4 :
return "User";
case 5 :
return "Permission";
default :
return null;
}
}
}
I want to set the column index 0 have an icon,
and the icon is check if the value in column 0 is TRUE i set icon A, and else set icon B.
This is my controller to render the content of table.
Code:
Vector <ChannelSftp.LsEntry> fileList = Helper.listDirectory("/home/medifile/", view.getChannelSftp());
for (int i = 0; i < fileList.size(); i++) {
String [] a = fileList.get(i).toString().split(" ");
ServerData serverData = new ServerData();
serverData.setDirectory(fileList.get(i).getAttrs().isDir());
serverData.setFileName(fileList.get(i).getFilename());
serverData.setPermissions(fileList.get(i).getAttrs().getPermissionsString());
serverData.setDateModified(fileList.get(i).getAttrs().getMtimeString());
serverData.setSize(fileList.get(i).getAttrs().getSize());
serverData.setUser(String.valueOf(fileList.get(i).getAttrs().getUId()));
list.add(serverData);
}
tbModel.setData(list);
view.getTblData().setModel(tbModel);
Please help me, thank you :)
Re: Problem set icon in JTable cell from Model
1) You need to store the Icon you want displayed in the TableModel
2) You need to override the getColumnClass(..) method to return Icon.class for the column that contains the icon.