Hallo,
Ich habe die Aufgabe, eine Gerade zu zeichnen, die durch 2 Clicks definiert wird. Dazu hab ich eine Punkt-Klasse erstellt, die mir die beiden Punkt liefern soll, und eine Gerade-Klasse, welche mir die Punkte verbinden und die Gerade zeichnen soll.
Hier mein Versuch:
Das Problem ist, dass zwar ein Strich gezeichnet wird, sich dieser aber aber oberen Rand des Frames befindet. Der 2. Click wird zudem ignoriert.
Wo liegt der Fehler?? Ich nehme an, ich habe beim Anfügen der Mouselistener einen Murks gemacht. Leider fehlt mir das Wissen, um den Fehler zu erkennen.
Vielen Dank und schon mal schöne Pfingsten!
Ich habe die Aufgabe, eine Gerade zu zeichnen, die durch 2 Clicks definiert wird. Dazu hab ich eine Punkt-Klasse erstellt, die mir die beiden Punkt liefern soll, und eine Gerade-Klasse, welche mir die Punkte verbinden und die Gerade zeichnen soll.
Hier mein Versuch:
Code:
package geradeZeichner;
import java.awt.geom.Line2D;
import java.awt.Graphics2D;
import java.awt.Graphics;
import javax.swing.JComponent;
public class Zeichner extends JComponent{
private Line2D.Double l;
private int x1;
private int x2;
private int y1;
private int y2;
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
l = new Line2D.Double(x1,y1,x2,y2);
g2.draw(l);
}
public void draw1(int x1, int y1)
{
this.x1 = x1;
this.y1 = y2;
repaint();
}
public void draw2(int x2, int y2)
{
this.x2 = x2;
this.y2 = y2;
repaint();
}
}
Code:
package geradeZeichner;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;
public class Punkter {
public static void main(String[] args)
{
JFrame frame = new JFrame("Zeichner");
JPanel panel = new JPanel();
final Zeichner z = new Zeichner();
class Punkt1 implements MouseListener
{
public void mouseClicked(MouseEvent event)
{
int x1 = event.getX();
int y1 = event.getY();
z.draw1(x1, y1);
}
public void mousePressed(MouseEvent event) {}
public void mouseReleased(MouseEvent event) {}
public void mouseEntered(MouseEvent event) {}
public void mouseExited(MouseEvent event) {}
}
class Punkt2 implements MouseListener
{
public void mouseClicked(MouseEvent event)
{
int x2 = event.getX();
int y2 = event.getY();
z.draw1(x2, y2);
}
public void mousePressed(MouseEvent event) {}
public void mouseReleased(MouseEvent event) {}
public void mouseEntered(MouseEvent event) {}
public void mouseExited(MouseEvent event) {}
}
MouseListener listener1 = new Punkt1();
MouseListener listener2 = new Punkt2();
z.addMouseListener(listener1);
z.addMouseListener(listener2);
frame.add(z);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300,300);
frame.setVisible(true);
}
}
Wo liegt der Fehler?? Ich nehme an, ich habe beim Anfügen der Mouselistener einen Murks gemacht. Leider fehlt mir das Wissen, um den Fehler zu erkennen.
Vielen Dank und schon mal schöne Pfingsten!