Kannst du mir das besser beschreiben/erklären? Ich bin Anfänger auf dem Bereich und habe persönlich keine Idee, wie ich das umsetzen sollDu musst in einer Datenstruktur (z.B. Liste) speichern, was genau du zeichnen möchtest. Also vermutlich eine Liste von Punkten, die durch Liniensegmente miteinander verbunden werden sollen. Diese Liste musst du dann in der paint() Methode der Komponente durchgehen und mit einem Graphics2D Objekt der Komponente zeichnen.
Code dieses Links nach etwas Kosmetik.Sollte helfen
Javabeginners - Freihandzeichnen
javabeginners.de
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class FreeHandDrawPanel extends JPanel {
private ArrayList<Point> points = new ArrayList<>(); // speichert die Punkte des Pfades
public FreeHandDrawPanel() {
addMouseMotionListener(new MouseAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
points.add(new Point(e.getX(), e.getY()));
repaint();
}
});
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g); // sollte nicht weggelassen werden
if (points.size() < 2)
return;
Point start = points.get(0);
for (int i = 1; i < points.size() - 1; i++) {
Point end = points.get(i);
g.drawLine(start.x, start.y, end.x, end.y);
start = end;
}
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.add(new FreeHandDrawPanel());
frame.setSize(400, 400);
frame.setTitle("Freihandzeichnen");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}