Ich habe einen Kritzelblock entwickelt, den man nun auch ausdrucken können soll (für eine Studienarbeit).
Mein Drucker bewegt sich schon, aber druckt nur eine leere Seite. Ich hoffe jemand findet meinen Denkfehler:
DrawPanel erweitert JPanel nur um einige Linien.
hier greife ich auf das DrawPanel/JPanel "block" zurück, das im Frame angezeigt wird und inzwischen evtl noch weiter bemalt wurde.
Die Ausgabe "Block gedruckt" sehe ich wie gesagt und der Drucker bewegt sich auch.
Sieht jemand den Fehler?
Mein Drucker bewegt sich schon, aber druckt nur eine leere Seite. Ich hoffe jemand findet meinen Denkfehler:
Code:
public class Zeichnung extends JFrame implements ActionListener, MouseMotionListener{ private static final long serialVersionUID = 1L; private Color farbe = Color.black; public static JPanel block; public static void main(String[] args) { new Zeichnung(); } private Zeichnung() { setSize(400,400); setDefaultCloseOperation(EXIT_ON_CLOSE); Container window = getContentPane(); window.setLayout(new BorderLayout()); JButton button = new JButton("Grafik drucken"); window.add(button, BorderLayout.SOUTH); button.addActionListener(this); block = new DrawPanel(); window.add(block, BorderLayout.CENTER); block.addMouseMotionListener(this); block.repaint(); setVisible(true); } public void actionPerformed(ActionEvent e) { try { PrinterJob pj = PrinterJob.getPrinterJob(); pj.setPrintable(new TextPrintable() ); pj.print(); } catch (PrinterException e1) { System.out.println("Fehler beim Drucken. " + e1.getMessage()); } }
Code:
import java.awt.Graphics; import java.awt.print.PageFormat; import java.awt.print.Printable; class TextPrintable implements Printable { public int print( Graphics g, PageFormat pageFormat, int pageIndex ) { if ( pageIndex < 1 ){ g = Zeichnung.block.getGraphics(); System.out.println("Block gedruckt"); return Printable.PAGE_EXISTS; } else { return Printable.NO_SUCH_PAGE; } } }
Die Ausgabe "Block gedruckt" sehe ich wie gesagt und der Drucker bewegt sich auch.
Sieht jemand den Fehler?
Comment