kostenloser Webspace werbefrei: lima-city


allgemeine Fragen zu MouseListener

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    dschulte

    dschulte hat kostenlosen Webspace.

    hallo, ich versuche gerade MouseListener zu implementieren. Ich habe ein Muster gepaintet und würde gerne die verschiedenen felder mit einen mouselistener belegen. wie mach ich des am besten?
    wie funktioniert doppelklick?
    kann man sich die klicks merken lassen?

    danke
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ganz einfach: Schreibe dir zwei neue Funktionen, eine doppelklick() und eine geklickt().
    Speichere in der Doppelklickfunktion ab, wann geklickt wurde, (man könnte hier die geklickt()- Funktion aufrufen) und füge in dein Programm einen Timer ein. Hier kannst du dann die vergangene Zeit seit dem letzten Klick überprüfen und gucken, ob man einen erneuten Klick als Doppelklick werten kann.

    Beitrag zuletzt geändert: 1.2.2010 15:34:06 von toolz
  4. Einen Doppelklick abfragen geht noch viel einfacher:
    Die Methoden, die du in MouseListener implementierst bekommen ja jeweils ein MouseEvent übergeben.
    Bei diesem kannst du mit getClickCount() die Anzahl der Klicks abfragen. Dabei wird - soweit ich weiß - automatisch die Systemeinstellung der Mouse-konfiguration zu Grundegelegt, um zu entscheiden, ob die Klicks schnell genug waren, um ein Doppelklick zu sein. Analog kannst du damit auch Dreifachklicks, ect abfragen.

    Was meinst du mit Klicks merken? Du kannst eine Datenstruktur (z.B. eine Array) anlegen, die dem Muster entspricht und dort eintragen, wohin geklickt wurde.

    Wie du feststellen kannst, in welchem Feld dein Klick liegt, hängt von dem Muster ab. Von einem MouseEvent kannst du mit getX() und getY() die Mauskoordinaten, an denen das Event stattfand, abfragen. Um das einem Feld zuzuordnen, müsste man wissen, wie das Muster aussieht. Wenn die Felder rechteckig sind, kannst du ein java.awt.Rectangle zu jedem Feld anlegen und mit der contains(int x, int y)-Methode von Rectangle abfragen, ob der Punkt drin liegt. Bei Polygonalen Feldern kannst du auch java.awt.Polygon benutzen. In java.geom sind sogar klassen drin, mit denen man die Punktzugehörigkeit zu runden Feldern (genauer gesagt: zu Feldern, deren Rand eine Bezier-Kurve ist) abfragen kann. Aber wenn du DAS brauchst, poste am besten nochmal...

    Gruß
  5. Alternativ wärte folgendes:
    public void mousePressed(MouseEvent me)
        {
            if (me.getButton() == MouseEvent.BUTTON1) {
                x = me.getX();
                y = me.getY();
                clicked = true;
            }
        }
    public void mouseClicked(MouseEvent me) {
    
        }
    
        public void mouseEntered(MouseEvent me) {}
        public void mouseReleased(MouseEvent me) {}
        public void mouseExited(MouseEvent me) {
    
        }


    Hier haste alles:
    für Doubleclick gibts auch noch ne Methode musste nur in der Doku nachschauen...
    In MousePressed werden nicht nur der geklickte Mousebutton abgefragt sondern auch die X und Y Koordinaten im Bezug auf das Feld zu dem der Mouse Listener gehört.

    Achso und die Methoden schreibst du alle in dein Programm, die werden von deinem Mouse-Listener aufgerufen.

    Beitrag zuletzt geändert: 27.7.2010 1:02:13 von sadweb
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!