Hi JavaGemeinde,
verzweifel an folgendem Problem: Ich habe ein BufferedImage (das sich auch schön in einer PNG-Datei abspeichern lässt) und möchte es an meine Drucker-Routine schicken, die allerdings nur Components drucken kann. Ich möchte dazu einfach nur das BufferedImage (ohne Zwischenspeichern) auf einem Label anzeigen. Weder Code A noch B funktionierten dabei.
Weiß jemand Rat?
Möglichkeit A: Über ein ImageIcon; Resultat: schwarze Fläche
Möglichkeit B: Überschreiben der paintMethode, Resultat: nix!
Mit der Klasse MyLabelX:
Beide Möglichkeiten führen aus irgendwelchen Gründen nicht weiter. Da das erste Beispiel mit weniger Zeilen zumindest zu einem schwarzen Rechteck kommt
würde ich gerne diesen Weg weiterverfolgen.
Weiß aber nicht mehr weiter. Hier vielleicht jemand? Bitte! :bahnhof:
By<e Ulrich
verzweifel an folgendem Problem: Ich habe ein BufferedImage (das sich auch schön in einer PNG-Datei abspeichern lässt) und möchte es an meine Drucker-Routine schicken, die allerdings nur Components drucken kann. Ich möchte dazu einfach nur das BufferedImage (ohne Zwischenspeichern) auf einem Label anzeigen. Weder Code A noch B funktionierten dabei.
Möglichkeit A: Über ein ImageIcon; Resultat: schwarze Fläche
Code:
BufferedImage image = new BufferedImage(jTabbedPane.getComponent(jTabbedPane.getSelectedIndex()).getWidth(),
jTabbedPane.getComponent(jTabbedPane.getSelectedIndex()).getHeight()-40,
BufferedImage.TYPE_INT_RGB);
image.createGraphics();
ImageIcon myIcon = new ImageIcon(image);
JOptionPane.showMessageDialog(Auswerten.this, "Icon","A plain message",JOptionPane.PLAIN_MESSAGE, myIcon);
Möglichkeit B: Überschreiben der paintMethode, Resultat: nix!
Code:
// BufferedImage erstellen
BufferedImage image = new BufferedImage(jTabbedPane.getComponent(jTabbedPane.getSelectedIndex()).getWidth(),
jTabbedPane.getComponent(jTabbedPane.getSelectedIndex()).getHeight()-40,
BufferedImage.TYPE_INT_RGB);
image.createGraphics();
Graphics2D g2d = image.createGraphics();
g2d.drawImage(image, null, 100, 100);
JFrame frameX = new JFrame();
frameX.getContentPane().setLayout(new GridBagLayout());
MyLabelX abc = new MyLabelX(image);
abc.paintComponent(g2d);
// MyLabelX abc auf JFrame -> anzeigen
frameX.getContentPane().add(abc);
frameX.pack();
frameX.setVisible(true);
Code:
public class MyLabelX extends JLabel {
BufferedImage image;
public MyLabelX(BufferedImage image) {
this.image = image;
repaint();
}
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
super.paintComponent(g2d);
g2d.drawImage(image, 0, 0, this);
}
}
Beide Möglichkeiten führen aus irgendwelchen Gründen nicht weiter. Da das erste Beispiel mit weniger Zeilen zumindest zu einem schwarzen Rechteck kommt
Weiß aber nicht mehr weiter. Hier vielleicht jemand? Bitte! :bahnhof:
By<e Ulrich