q1:mouselistener

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();       
 
    }
  }
}
  • /var/www/infowiki/data/pages/q1/mouselistener.txt
  • Zuletzt geändert: 2017/09/18 18:05
  • von admin03