Java erkennen, lange Maustaste drücken
Gibt es eine Möglichkeit, zu erfassen, ein Ereignis, wenn ein Benutzer drücken Sie auf JList-Komponente für mehr als 3 Sekunden?
Der schwierige Teil ist find ich das event muss ausgelöst werden, noch bevor der Benutzer die Maustaste loslassen der linken Taste. (das kann leicht getan werden, indem paar mousePressed und mouseReleased)
- Alle Antworten (ab 2016) enthalten täuschend subtilen bugs und sollte nie verwendet werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Heres, was ich für ähnliche Situationen:
fügen Sie diese zu Ihrem JLabel durch den Aufruf label.addMouseListener(new Player());
Timer
Können Sie einen timer einstellen, in deinem mouseDown-Ereignis-listener, und führen Sie es alle 500 ms nach einer anfänglichen Verzögerung von 3000 ms. In Ihrem mouseReleased Sie können Abbrechen, die timer. Auf die run-Methode des
TimerTask
- Objekt zugeordnet, IhreTimer
Sie können führen Sie die Berechnung der Aufgabe, die Sie wollen. Hier ist meine Lösung:Zwei verschiedene Lösungen (fast die gleiche wie die vorherigen) :
oder
Ich habe eine Idee. Es ist nicht genau das ein listener, aber was Sie tun können, ist auf
mousePressed
können Sie einen timer starten. Wenn der timer auf 3 Sekunden, in dem das Ereignis beginnt, oder wenn Sie gehen, aufmouseReleased
die den timer Stoppt.Mit diesem code können Sie erkennen und verwalten gedrückt, lang oder kurz (wie auf), ein Ereignis, einen anderen ausschließen.