![](/img/trans.png)
[英]Java - Is it possible to put an image and a String in the same JTable cell?
[英]JAVA: Put Image in jTable Cell
我需要在一個jTable單元格中顯示圖像。
我寫了這個:
class ImageRenderer extends DefaultTableCellRenderer {
JLabel lbl = new JLabel();
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
lbl.setText((String) value);
lbl.setIcon(new ImageIcon("/home/ariyan/Desktop/71290452.jpg"));
return lbl;
}
}
然后用它作為:
jTable1.getColumn(0).setCellRenderer(new ImageRenderer());
但這沒效果
我怎么能這樣做?
謝謝
JTable已經為圖像提供了默認渲染器。 您只需要告訴表格每列中包含哪種類型的數據,它將選擇最佳渲染器:
a)覆蓋JTable的getColumnClass()方法或TableModel以返回列中的數據類。 在這種情況下,您應該返回一個Icon.class。
b)將ImageIcon添加到表模型中。
現在,JTable將使用該列的默認Icon渲染器。
嗯: jTable1.getColumnModel().getColumn(0).setCellRenderer(new ImageRenderer());
也許?
這是我匯總的一些快速測試代碼的相關摘錄,以便快速驗證我的猜測。 它顯示文件夾中的圖標(它假定文件夾中的所有文件都是圖標,因此您應該使用類似XDG圖標主題子目錄的方法進行測試)。 首先安裝表模型,然后在列上添加單元格渲染器:
class Renderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent (JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row, int column) {
if(isSelected) {
this.setBackground(table.getSelectionBackground());
this.setForeground(table.getSelectionForeground());
}
else {
this.setBackground(table.getBackground());
this.setForeground(table.getForeground());
}
if(column == 0) {
this.setText(list[row]);
}
else {
// edit as appropriate for your icon theme
this.setIcon(new ImageIcon("/usr/share/icons/default.kde4/16x16/apps/"+list[row]));
}
return this;
}
}
class Model extends DefaultTableModel {
@Override
public boolean isCellEditable (int row, int column) {
return false;
}
@Override
public Object getValueAt (int row, int column) {
return list[row];
}
@Override
public int getRowCount () {
return list.length;
}
@Override
public int getColumnCount () {
return 2;
}
@Override
public String getColumnName (int column) {
return column == 0? "Name" : "Preview";
}
@Override
public Class<?> getColumnClass (int columnIndex) {
return String.class;
}
}
// edit base directory as appropriate for your icon theme of choice
static String[] list=new File("/usr/share/icons/default.kde4/16x16/apps/").list();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.