Image in JTable einfügen

MarDaiBre

Aktives Mitglied
Hallo,

ich habe eine Tabelle, welche in eine andere Klasse zur PDF-Erstellung übergeben wird. Nun möchte ich, dass die Tabelle (1x1) als ColumnHeader einen Text und in die erste Zeile ein Image bekommt. Funktioniert alles bis auf die Anzeige des Bildes. Sämtliche Webergebnisse dazu haben mir nicht geholfen - ich erhalte immer Metadaten anstatt ein Bild. Welcher Zusatz fehlt mir denn da?

Java:
DefaultTableModel model = new DefaultTableModel(); 
model.addColumn("Fehlerort " + oid + " für Baureihe " + bid);
model.addRow(new Object[]{""});
			
JTable tabelle = new JTable(model); 		
tabelle.setValueAt(bufferedImageOptimized.getGraphics(), 0, 0);

Anbei einmal das Ergebnis aus der PDF. Vielen Dank für Tipps!
Unbenannt.PNG
 

Joose

Top Contributor
Leider sagst du uns nicht was du schon probiert hast usw., daher werden vielleicht viele Vorschläge hier nochmals kommen.

[ot]
Warum verwendest du eine JTable die gerade mal 1x1 groß ist und bastelst dir nicht eine eigene Komponente dafür?
Wäre individueller und du hättest dieses Problem auch nicht ;)
[/ot]
 

X5-599

Top Contributor
Quick and dirty ginge es mit einem eigenen CellRenderer:

Java:
Icon icon = new ImageIcon(ImageIO.read(Start.class.getResource("/icon.png")));
		Icon[][] tableData = new Icon[][]{{icon}};
		
		JTable table = new JTable(tableData, new String[]{"Caption"});
		table.getColumnModel().getColumn(0).setCellRenderer(new TableCellRenderer(){
			private JLabel label = new JLabel();
			@Override
			public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
			{
				label.setIcon((Icon)value);
				return label;
			}
			
		});

EDIT:
Sind natürlich keine Ausnahmefehlerbehandlungen drin. z.b. wird hier davon ausgegangen, dass es mindestens eine Coloumn gibt und dass darin "Icon" Objekte liegen. Wird zu Problemem führen, sollten diese Vorraussetzungen einmal nicht gegeben sein...
 
Zuletzt bearbeitet:

MarDaiBre

Aktives Mitglied
Hallo,

@Joose: Ich habe eine Klasse, welche für andere Zwecke im gleichen Programm eine PDF erstellt und als Inhalt eine Tabelle verlangt. Um das Bestehende wiederverwenden zu können, war das die (zumindest mein Gedanke) einfachste Lösung und wird (wenn es denn klappt) auch optisch vollkommen ausreichend sein.

@X5-599: Danke, ich habe dein Beispiel mal ausprobiert, erhalte aber auch hier kein Bild. Wo das Bild sein sollte, erhalte ich "javax.swing.ImageIcon@...". :-(
 

X5-599

Top Contributor
Wie sieht denn dein Code mit den Änderungen aus? Hast du mal versucht mein Beispiel mit einem neuen Frame zu benutzen? Denn wenn ich das bei mir ausführe sehe ich ein Bild. Und wenn du wieder nur ""javax.swing.ImageIcon@.." siehst hiesse das, dass der Renderer nicht überschrieben wurde und noch der Standard Renderer aktiv ist.
 

MarDaiBre

Aktives Mitglied
Hier einmal mein Code mit angepasstem Renderer:
Java:
public void actionPerformed (ActionEvent e)
	{
		Object source = e.getSource();
		if (source == print)
		{			
			/*
			DefaultTableModel model = new DefaultTableModel(); 
			model.addColumn("Fehlerort " + oid + " für Baureihe " + bid);
			model.addRow(new Object[]{""});
			
			JTable tabelle = new JTable(model); 
			
			tabelle.setValueAt(bufferedImageOptimized.getGraphics(), 0, 0);
			*/
			
			Icon ic = new ImageIcon(bufferedImageOptimized);
			Icon[][] tableData = new Icon[][]{{ic}};
			
			JTable tabelle = new JTable(tableData, new String[]{"Fehlerort " + oid + " für Baureihe " + bid});
			tabelle.getColumnModel().getColumn(0).setCellRenderer(new TableCellRenderer(){
				private JLabel label = new JLabel();
				@Override
				public Component getTableCellRendererComponent(JTable tabelle, Object value, boolean isSelected, boolean hasFocus, int row, int column)
				{
					label.setIcon((Icon)value);
					return label;
				}
			});
			
			JFileChooser fc = new JFileChooser("."); // Durch "." wird das Arbeitsverzeichnis gewaehlt.
			int returnValue = fc.showSaveDialog(Fehleranzeige.this);
			if (returnValue == JFileChooser.APPROVE_OPTION)
			{
				setCursor(new Cursor(Cursor.WAIT_CURSOR));
				File datei = fc.getSelectedFile();
				ReportPDF pdf = new ReportPDF(datei.getAbsolutePath(), tabelle, text);
		        setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
			}
		}
		
		else if (source == schliessen)
			setVisible (false);
	}
 

X5-599

Top Contributor
ich vermute mal, dass der Report Generator nur die Objekte aus dem TableModel holt und .toString() darauf aufruft (Also gar nicht über die Renderer geht)... Siehst du das Bild wenn du sowas in deine actionPerformed einbaust?

Java:
JDialog dialog = new JDialog();
dialog.add(tabelle);
dialog.setVisible(true);
 

MarDaiBre

Aktives Mitglied
Hey, ja dann erhalte ich ein neues Frame mit dem Bild, jedoch ohne den Tabellenrahmen und ohne Spaltenüberschrift, also nur das reine Bild. D. h. ich muss die Klasse für die Reporterstellung anpassen?
 

X5-599

Top Contributor
Ich denke mal schon. Ach ich sehe gerade, wenn du statt
Code:
dialog.add(tabelle)
einfach
Code:
dialog.add(new JScrollPane(tabelle));
schreibst, wird auch die Titelzeile angezeigt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
S Swing JTable: in erster Spalte Image darstellen AWT, Swing, JavaFX & SWT 30
M Image in JTable AWT, Swing, JavaFX & SWT 2
J JTable :String + Image? AWT, Swing, JavaFX & SWT 7
XWing Swing Image anzeigen und probleme mit klassen AWT, Swing, JavaFX & SWT 3
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
K JavaFX Bildergalerie aus Image Ordner laden AWT, Swing, JavaFX & SWT 3
JMölleri Swing Image wird unscharf dargestellt AWT, Swing, JavaFX & SWT 2
L AWT .gif image transparent machen AWT, Swing, JavaFX & SWT 3
kodela angezeigtes Image entfernen AWT, Swing, JavaFX & SWT 1
R Java, GUI, Hintergrundbild, Image, AWT, Swing, JavaFX & SWT 4
R Swing Background Image in JFrame implementieren AWT, Swing, JavaFX & SWT 40
T Swing Buffered Image anzeigen AWT, Swing, JavaFX & SWT 45
L Image kann nicht gefunden werden AWT, Swing, JavaFX & SWT 1
S Stretch Image in ImageView AWT, Swing, JavaFX & SWT 4
N Swing Image aus Web laden und in Icon umwandeln AWT, Swing, JavaFX & SWT 4
Fiedlerdan Image-Pfad Probleme nach Export aus Eclipse AWT, Swing, JavaFX & SWT 31
L JavaFX Image mit Blureffect AWT, Swing, JavaFX & SWT 2
Bluedaishi JavaFX Button Image aus Datenbank AWT, Swing, JavaFX & SWT 13
F javaxt.io.Image getBufferedImage liefert null AWT, Swing, JavaFX & SWT 1
Yjuq JavaFX Custom Control - Image resize AWT, Swing, JavaFX & SWT 0
D Java FX Image in einer Webanwendung annotieren und den Bereich ausschneiden AWT, Swing, JavaFX & SWT 0
I Bild über FXML (ImageView, Image) anzeigen AWT, Swing, JavaFX & SWT 1
T Image Loader lädt Bild nicht AWT, Swing, JavaFX & SWT 10
J 2D-Grafik Background Image Klasse AWT, Swing, JavaFX & SWT 14
Q AWT TicTacToe Image auf Button hinzufügen AWT, Swing, JavaFX & SWT 5
BreakdownBob Swing JLabel verschwindet hinter Image AWT, Swing, JavaFX & SWT 2
L JavaFX leeres weißes Image - javafx.scene.image.Image AWT, Swing, JavaFX & SWT 2
L JavaFX Image im ImageView auf Scroll Listener reagieren AWT, Swing, JavaFX & SWT 5
Naxon89 JavaFX Image wird nicht korrekt geladen AWT, Swing, JavaFX & SWT 3
W Javafx - Image soll sich mit der Camera mitbewegen AWT, Swing, JavaFX & SWT 1
B Graphics to Image AWT, Swing, JavaFX & SWT 3
L Image in anderes kopieren AWT, Swing, JavaFX & SWT 0
T Swing Image wird nicht geladen AWT, Swing, JavaFX & SWT 1
S JavaFX Image Skalierung in Scrollpane, Scrollpane resized sich nicht AWT, Swing, JavaFX & SWT 5
I Image im PopupMenu vom SystemTray AWT, Swing, JavaFX & SWT 8
F JavaFX Position von Image angeben/verändern AWT, Swing, JavaFX & SWT 2
M JavaFX Image View Würfel berechnen AWT, Swing, JavaFX & SWT 3
L JButton mit Image AWT, Swing, JavaFX & SWT 5
F Swing Image einem Button hinzufügen AWT, Swing, JavaFX & SWT 5
B Resize von Image nach Resize von Button AWT, Swing, JavaFX & SWT 1
T Image aus "nicht-src-ordner" AWT, Swing, JavaFX & SWT 5
vodkaz (javafx) Image Problem AWT, Swing, JavaFX & SWT 2
C Image laden und Speichern - Image wird auf JPanel nicht angezeigt AWT, Swing, JavaFX & SWT 4
M Image aus MS Access anzeigen lassen AWT, Swing, JavaFX & SWT 9
H Image im Array per Knopfdruck ändern AWT, Swing, JavaFX & SWT 6
P Image oder Icon auf Tooltip zeichnen AWT, Swing, JavaFX & SWT 4
G JavaFX Image vergrößern AWT, Swing, JavaFX & SWT 5
U Image mit Zeichenbereich rotieren AWT, Swing, JavaFX & SWT 3
P Speicherproblem SWT.Image in Nebula-Gallery AWT, Swing, JavaFX & SWT 3
L JavaFX: Bild in Image einlesen AWT, Swing, JavaFX & SWT 11
D Image soll langsam sichtbar werden AWT, Swing, JavaFX & SWT 4
D JLabel Image ausrichten AWT, Swing, JavaFX & SWT 2
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
bluerob Problem beim Image zeichnen via andere Klasse AWT, Swing, JavaFX & SWT 7
H Image Icon ersetzen AWT, Swing, JavaFX & SWT 8
I Image Button AWT, Swing, JavaFX & SWT 4
U IntBuffer zum Image konvertieren. AWT, Swing, JavaFX & SWT 9
S Eigene JComponent Image zeichnen AWT, Swing, JavaFX & SWT 3
T 2D-Grafik Slideshow (DoubleBuffering und Image transformieren/bewegen) AWT, Swing, JavaFX & SWT 6
K Swing Warum bleibt das Image immer gleich AWT, Swing, JavaFX & SWT 4
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
R Image laden sehr langsam AWT, Swing, JavaFX & SWT 7
D Image.getScaledInstance() vs. Netzwerkverbindung??? AWT, Swing, JavaFX & SWT 2
reibi SWT Image viewer AWT, Swing, JavaFX & SWT 2
lumo SWT Image funktion auf ImageDaten AWT, Swing, JavaFX & SWT 9
A Applet .gif in applet Image nicht animiert angezeigt AWT, Swing, JavaFX & SWT 4
M Image wird nicht neugezeichnet nach dem Wechsel AWT, Swing, JavaFX & SWT 2
lumo SWT Image Pattern AWT, Swing, JavaFX & SWT 5
P Image mehrfach in ein BufferedImage zeichnen AWT, Swing, JavaFX & SWT 7
M Swing Image in JPanel als Componente AWT, Swing, JavaFX & SWT 2
P nicht sichtbares JPanel / JFrame als Image speichern AWT, Swing, JavaFX & SWT 3
T Image skaliert in Variable speichern AWT, Swing, JavaFX & SWT 6
S Image wird nicht (immer) in paintComponent gezeichnet? AWT, Swing, JavaFX & SWT 6
S Swing Image wird nicht geladen AWT, Swing, JavaFX & SWT 2
0 Mousecurser mit Image hinterlegen AWT, Swing, JavaFX & SWT 4
B Swing Drag&Drop mit Feedback (Image am Mauszeiger) AWT, Swing, JavaFX & SWT 7
N Java Choice Bilderausgabe - images - - image - AWT, Swing, JavaFX & SWT 2
D iText PdfPCell mit Image AWT, Swing, JavaFX & SWT 3
S 2D-Grafik Icon in Image (System Icons) AWT, Swing, JavaFX & SWT 2
S Button mit Image AWT, Swing, JavaFX & SWT 7
A Skaliertes Image pixelweise bearbeiten AWT, Swing, JavaFX & SWT 6
L Swing Image zur Laufzeit verändern AWT, Swing, JavaFX & SWT 6
F SWT GC drawText auf halbtransparentem Image AWT, Swing, JavaFX & SWT 21
G Swing JEdtitorPane und HTML Image Seite AWT, Swing, JavaFX & SWT 2
C Image mit Graphics2D zeichnen AWT, Swing, JavaFX & SWT 9
C Image performant skalieren AWT, Swing, JavaFX & SWT 5
D SWT Image Farbtiefe AWT, Swing, JavaFX & SWT 2
L Swing Auf unabhängiges Image-Objekt zeichnen AWT, Swing, JavaFX & SWT 8
lumo SWT Composite + Image + zeichnen AWT, Swing, JavaFX & SWT 4
V Ein Image als Button (nicht mit JButton(Icon)) AWT, Swing, JavaFX & SWT 5
D Image Viewer gesucht AWT, Swing, JavaFX & SWT 5
Kr0e Image schärfen AWT, Swing, JavaFX & SWT 2
R Bild drehen UND skalieren (Image bzw BufferedImage) AWT, Swing, JavaFX & SWT 5
T Image auf Image zeichnen AWT, Swing, JavaFX & SWT 2
E Warum ist offscreen (mit Image) schneller? AWT, Swing, JavaFX & SWT 11
G Swing Image speichern / 0 Byte AWT, Swing, JavaFX & SWT 7
H Image abspeichern AWT, Swing, JavaFX & SWT 4
B Swing Image als Hintergrund im JInternalFrame - Problem AWT, Swing, JavaFX & SWT 3
W Image in jar einbauen AWT, Swing, JavaFX & SWT 20

Ähnliche Java Themen

Neue Themen


Oben