Hallo ich wollte mit meinem Programm ein Linien zeichen, wo Linien gezogen werden können, vergleichbar zum Konstruktionstool in Word, um halt später damit Analysen durchführen zu können. Das funktioniert zwar wunderbar aber nur für eine Linie Hab mich schon hier durchgeblättert im Forum nur bin ich nicht schlauer geworden :###
Hier ist erstmal der Code, ich benutze eine Canvasoberfläche zum Zeichnen:
Das Problem ist das die ganze Oberfläche jedesmal neu gezeichnet wird, sobalg die Maus gezogen wird. das update brauch ich da sonst sehr viele linien gezeichnet werden. Hab mir überlegt die Linien in ein Vektor oder einen Baum zu packen und die dann immer zeichnen zulassen,da ich eh eine Zwischenspeicherung brauche, um die Nummer der Linie anzeigen zu lassen. Stehe aber irgendwie auf dem Schlauch.
Hier ist erstmal der Code, ich benutze eine Canvasoberfläche zum Zeichnen:
Code:
public class MyCanvas extends Canvas implements MouseListener,
MouseMotionListener {
int width, height;
private Point p1, p2;
Graphics MyGraphics;
MyCanvas(int width, int height) {
this.width = width;
this.height = height;
reshape(0, 0, width, height);
addMouseListener(this);
addMouseMotionListener(this);
}
public void paint(Graphics g) {
MyGraphics = getGraphics();
if (p1 != null && p2 != null) {
Graphics2D g2d = (Graphics2D) g;
g2d.setStroke(stroke);
g2d.drawLine(p1.x, p1.y, p2.x, p2.y);
//Anzeigen der Nummer: aus Array...
g2d.drawString("Nr. xx", p2.x + 10, p2.y + 10);
}
}
public void mousePressed(MouseEvent e) {
//Durch drücken wird der erste Punkt geholt
p1 = e.getPoint();
}public void mouseDragged(MouseEvent e) {
//Solange Maus gehalten, wird gezeichnet
p2 = e.getPoint();
this.update(MyGraphics);
}