Post by Schoetz FlorianIst es m glich in ein JTable ein Bild einzuf gen und wenn ja wie?
W re f r jegliche Hilfe dankbar.
Ein Icon/ImageIcon einf gen. Wenn du ein eigens TableModel hast
gibst du das 'statt einem String' zur ck, bei getColumnClass()
Icon.class.
[...]
Post by Schoetz Florianhineingeladen...allerdings in die gesamte Spalte, da ich keine
einzelne Zelle ansprechen kann. Es scheint nur getColumn() zu geben.
[...]
Post by Schoetz Florianint count;
ausgabe = new JTable(5,5);
MyInternalFrame.dtcr.setIcon(getImageIcon());
MyInternalFrame.ausgabe.getColumnModel().getColumn(count).setCellRenderer(
MyInternalFrame.dtcr);
Hier setzt du ein Icon fest für einen Renderer, und diesen dann zum
zeichnen der Spalte. Der Renderer wird immer wieder nach seinem Inhalt
gefragt, da du denselben (das gehört so) für alle Icon-Zellen verwendest
passiert das so.
Verwendest du ein eigenes TableModel?
Oder fügst du deine Daten über einen Vector in die Tabelle ein?
Ich meinte getColumnClass() des _TABLE_Models.
Ich such mal ein Beispiel... mit einem AbstractTableModel.
Als Gimmick passt es noch die Zeilenhöhe an die Bilder an:
------------------------------------------------------------------
import java.awt.Component;
import javax.swing.*;
public class IconInTable extends JFrame {
public static void main(String[] args) {new IconInTable();}
public IconInTable() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTable t = new JTable(new ATableModel());
getContentPane().add(new JScrollPane(t));
setCellSizes(t);
pack();
show();
}
static class ATableModel extends javax.swing.table.AbstractTableModel{
Icon icon = new ImageIcon(
getClass().getResource("/javax/swing/plaf/metal/icons/Inform.gif")
);
public Class getColumnClass(int col) {
return col%3>0? Object.class:Icon.class;
}
public int getColumnCount() {return 10;}
public int getRowCount() {return 30;}
public Object getValueAt(int r, int c){
if (c%3>0) return (char)('A'+c)+""+r;
else return icon;
}
}
static void setCellSizes(JTable t){
int nRow = t.getRowCount();
int nCol = t.getColumnCount();
if (nRow<1 || nCol<1) return;
double maxH = 0;
for (int r=0; r<nRow; r++) {
for (int c=0; c<nCol; c++) {
Component rend = t.prepareRenderer(t.getCellRenderer(r,c),r,c);
maxH = Math.max(rend.getPreferredSize().height,maxH);
}
t.setRowHeight(r, (int) maxH);
}
}
}
------------------------------------------------------------------
Grüße
Peter
--
Shell&Jar : Individual icons for jars
jMineSweeper : extended
www.PeterBuettner.de