# Punkte auf einem JPanel zeichnen



## hakker82 (16. Jan 2006)

Ich habe ein kleines Applet programmiert. Es ist ein JPanel, auf dem man zeichnen kann. Funktioniert auch großartig. Nur habe ich jetzt ein Problem. Es sollen auch noch 5 Punkte darauf zu sehen sein, die man dann mit gezeichneten Linien verbinden soll.
Alle Versuche Punkte abzubilden sind bisher gescheitert, sie sind einfach nicht zu sehen. Wie würdet ihr das machen?

```
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.*;

public class DrawApplet extends JApplet
{
	
	public void init()
	{
		final DrawPanel draw = new DrawPanel();
		add(draw);
		
	}
}

class DrawPanel extends JPanel
{
	public DrawPanel()
	{
		points = new ArrayList<Point2D>();
		current = null;

		addMouseListener(new MouseHandler());
		addMouseMotionListener(new MouseMotionHandler());
		
		JButton clearButton = new JButton("clear");
		clearButton.addActionListener(
			new ActionListener()
			{
				public void actionPerformed(ActionEvent event)
				{
					clear();
				}
			}
		);

		add(clearButton);
	}

	public void clear()
	{	
		points = new ArrayList<Point2D>();
		repaint();
	}

	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);

		int lastX = 0, lastY = 0;
		for (Point2D p:points) {
			int currentX = (int) p.getX();
			int currentY = (int) p.getY();

			if (lastX != 0 && currentX != 0) {
				g.drawLine(lastX, lastY, currentX, currentY);
			}

			lastX = currentX;
			lastY = currentY;
		}
	}

	public void add(Point2D p)
	{
		double x = p.getX();
		double y = p.getY();

		current = new Point2D.Double(x, y);
		points.add(current);
	}

	private ArrayList<Point2D> points;
	private Point2D current;
	
	private class MouseHandler extends MouseAdapter
	{
		public void mouseReleased(MouseEvent event)
		{
			add(new Point2D.Double(0, 0));
		}
	}
	
	private class MouseMotionHandler extends MouseMotionAdapter
	{
		public void mouseDragged(MouseEvent event)
		{
			add(event.getPoint());
			repaint();
		}
	}
}
```


----------



## Beni (16. Jan 2006)

Ich wurde einen kleinen Kreis zeichnen.

```
int x, y = ...
g.fillOval( x-2, y-2, 4, 4);
```


----------



## hakker82 (16. Jan 2006)

Wo würdest du das einfügen?


----------



## hakker82 (16. Jan 2006)

Danke für deine Hilfe.


----------



## L-ectron-X (16. Jan 2006)

In die paintComponent()-Methode


----------

