Draggen resultiert in mouseClicked()

Status
Nicht offen für weitere Antworten.

1-2-3-man

Mitglied
So sollte es sein:
mouseDragged() occurs when the user presses the mouse button and moves the mouse before releasing the button. Releasing the mouse button after a mouseDragged() will not result in a mouseClicked().
Tja, aber bei mir sieht es so aus: pressed - drag - drag - ... - released - clicked
Also zum Schluss wird ein clicked() erkannt, was ja nicht sein sollte. Ist ziemlich blöd, weil ich im Team entwickle und dadurch natürlich ganz schöne Probleme entstehen. Jemand ne Ahnung, woran das liegen könnte ?
Zur Info: Linux mit X.Org 6.7 und Fluxbox 0.9.10, Java 5.0

Gruß 1-2-3-man
 

Nova

Bekanntes Mitglied
Hallo,

Also bei mir (Java5.0 WindowsXP) kommt KEIN mouseClicked-Event nach einem mouseDragged!
Ich weiß das so genau weil ich nämlich genau das brauchte und von Hand die mouseClicked-Methode aufrufen musste.



mfg
Christian
 

1-2-3-man

Mitglied
Schön für dich, das ist ja genau mein Problem, bei allen kommt das nicht, nur bei mir :autsch:
Wir können ja tauschen, dann wären wir beide zufrieden. :wink:
 
R

Roar

Gast
son ähnliches problem hatte hier schonmal jemand.
liegt wohl an deinem xserver, der so die events verschickt. bleibt dir nix andres übrig als dir nen anständigen xserver zu holen oder nen workaround zu schreiben ;)
 

1-2-3-man

Mitglied
Na suppa, was ist denn ein anständiger X-Server ? X.Org ist ja wohl Standard, na gut, ist nicht die aktuellste Version, die ich habe, aber theoretisch müssten dann doch jede Menge Leute dieses Problem haben. Ein Kumpel hat auch Linux und bei ihm funzt alles normal, der hat aber noch den alten XFree...
Ich muss mir aber eh demnächst den neuesten X.Org besorgen, da es keinen Ati-Treiber für 6.7 gibt und der alte Treiber von XFree meinen X-Server zum Abschmieren bringt. Dann kann ich ja nur hoffen, dass sich das Problem dann erledigt.
:roll:
 

Nova

Bekanntes Mitglied
Hallo,

Wenn das Problem wirklich bei einem xserver liegt dann kann das ja nacher auch beim User auftreten...
Dann wäre ein Workaround wohl so oder so nötig...

Da ich bei mir in bestimmten Situationen mouseDraggs verhindern will musste ich auch einen Workaround schreiben der dir vielleicht hilft. Ich änder das mal so ab das es für dein Problem (mouseClicks verhindern) passen müsste:

Du setzt eine boolean-Klassenvariable "mouseDragged", wird die Methode mouseDragged aufgerufen setzt du diese Variable auf true. In der mousePeessed-Methode setzt du die Variable auf false.
In der mouseClicked-Methode schreibst du gleich am Anfang
Code:
if (mouseDragged){
    return;
}

Es passiert nun folgendes:
Wird die mouse "gedragged" merkt sich das Programm das, wird nun mouseClicked aufgerufen springt das Programm sofort wieder aus der Methode raus falls vorher gedragged wurde (der eigentlich nicht vorhandene Mausklick wurde also ignoriert).
"Echte" Mausklicks werden ganz normal durchgelassen, denn ein "echter" Mausklick wird erst ausgeführt nachdem mousePressed ausgeführt wurde und das Programm setzt den Wert der Variablen wieder als false.


Sind gerade mal 5-6 Zeilen Code und das Problem müsste gelöst sein.


mfg
Christian
 

1-2-3-man

Mitglied
@Nova
Deine hübschen Ausführungen wären zwar nicht nötig gewesen, da ich mir exakt dasselbe auch schon überlegt habe, aber trotzdem danke :wink:
Mir ging es eigentlich mehr um die Ursache bzw. die Behebung des Problems, was aber ja anscheinend ohne Wechsel des X-Servers nicht zu machen ist.
Wobei ja eigentlich jeder, der ein Programm in Java schreibt, wo entsprechende Passagen mit Maus-Aktionen vorkommen, dann darauf Rücksicht nehmen müsste, dass es User gibt, bei denen die Mouse-Events anders gehandhabt werden. Das müsste dann doch allgemein bekannt sein oder ist das jetzt wirklich sowas Außergewöhnliches ?
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben