import java.awt.*; import java.awt.event.*; import javax.swing.*; public class PunkteVerbinden extends JFrame { Container c; Zeichenbrett z; public PunkteVerbinden() { c = getContentPane(); z = new Zeichenbrett(); //Alles was passiert, passiert im Zeichenbrett, // ist ne saubere Lösung oder? c.add(z); } public static void main(String[] args) { PunkteVerbinden fenster = new PunkteVerbinden(); fenster.setTitle("Punkte verbinden"); fenster.setSize(250,200); fenster.setVisible(true); fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Zeichenbrett extends JPanel { private int[] x, y; // Koordinaten der Maus-Klicks private int n; // Anzahl Klicks public Zeichenbrett() { // Konstruktor n = 0; x = new int[1000]; y = new int[1000]; addMouseListener(new ClickBearbeiter()); } public void paintComponent(Graphics g) { super.paintComponent(g); g.drawPolyline(x,y,n); } // Innere Listener-Klasse fuer Maus-Ereignisse, // Innerer Monolog: Ich finde die Lösung total elegant und mir fallen sofort 1000 Anwendungsmöglichkeiten ein. // aber wie soll ich mit die innere Klasse vorstellen? Ich hab ein Objekt der Klasse Zeichenbrett erzeugt, das jetzt Speicher verschlingt. // Jetzt habe ich Klasse Mouseadapter an das Objekt drangebastelt (Sorry für das Wort, aber es ist ja nicht vererbt) // Intuitiv würde ich jetzt sagen, es geht nicht um die Klasse, sondern um deren Methoden, die offensichtlich nicht statisch sein können, weil // zu meinem Objekt gehören. // Aber so ganz passt das nocht nicht, naja.... class ClickBearbeiter extends MouseAdapter { public void mousePressed(MouseEvent e) { x[n] = e.getX(); // speichere x-Koordinate y[n] = e.getY(); // speichere y-Koordinate n++; // erhoehe Anzahl Klicks repaint(); } } }