Hallo Leute!
Ich habe folgendes Problem:
Mein Programm soll ein Zeichenbrett darstellen, die Zeichnung später gedruckt werden.
Leider wird jedesmal, wenn ich zu zeichnen beginne, das Bild und die Menüleiste verdoppelt und leicht verschoben. Könnt ihr mir sagen woran das liegt / wie ich das beheben kann?
und
Gruß abc
Ich habe folgendes Problem:
Mein Programm soll ein Zeichenbrett darstellen, die Zeichnung später gedruckt werden.
Leider wird jedesmal, wenn ich zu zeichnen beginne, das Bild und die Menüleiste verdoppelt und leicht verschoben. Könnt ihr mir sagen woran das liegt / wie ich das beheben kann?
Java:
package uebungen;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class ZeichnenDraw extends Zeichnen {
ZeichenbrettDraw z;
public ZeichnenDraw (){
Container c = getContentPane();
c.setLayout(new BorderLayout());
z = new ZeichenbrettDraw();
JMenuBar bar = new JMenuBar();
JMenu menu = new JMenu("Menü");
JMenuItem item = new JMenuItem("Drucken");
item.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
printit();
}
});
menu.add(item);
bar.add(menu);
c.add(bar, BorderLayout.NORTH);
c.add(z);
}
public static void main(String[] args) {
ZeichnenDraw fenster = new ZeichnenDraw();
fenster.setSize(300, 300);
fenster.setVisible(true);
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void printit(){
PrinterJob pjob = PrinterJob.getPrinterJob();
if ( pjob.printDialog() == false )
return;
pjob.setPrintable(this.z );
try {
pjob.print();
} catch (PrinterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Java:
package uebungen;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import javax.swing.JPanel;
public class ZeichenbrettDraw extends JPanel implements Printable{
int n = 0;
int[] x = new int[1000000];
int[] y = new int[1000000];
public ZeichenbrettDraw (){
addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent arg0) {
x[n] = arg0.getX();
y[n] = arg0.getY();
n++;
repaint();
}
});
}
@Override
protected void paintComponent(Graphics g) {
g.drawPolyline(x, y, n);
}
@Override
public int print(Graphics g, PageFormat pageFormat, int pageIndex)
throws PrinterException {
if ( pageIndex >= 1 )
return Printable.NO_SUCH_PAGE;
g.drawPolyline(x, y, n);
return Printable.PAGE_EXISTS;
}
}
Gruß abc