# Doppelklick Event



## jared (24. Aug 2010)

Hallo.

Stehe gerade auf dem Schlauch. Gibt es jetzt ein Doppelklick event von haus aus bei Java oder nicht?? Wenn nicht, gibt es nur die Möglichkeit mit event.getclickcount == 2???

mfg


----------



## Gast2 (24. Aug 2010)

Kommt auf dein ToolKit an bei SWT ja bei Swing nein


----------



## jared (24. Aug 2010)

Wie bei SWT ja und bei Swing nein??

Mein Problem ist folgendes:
Bei MouseClicked, fange ich zwei Sachen ab, Rechtsklick und Doppelklick (über getClickCount == 2).
Das markieren mache ich mittels MouseReleased und starte darin einen Thread, den ich erst einmal schlafen lege für 100 ms. Ist bis dahin kein Doppelklick eingegangen, wird das entsprechende Objekt als markiert gekennzeichnet. Oder würdet ihr dies anders machen??

mfg


----------



## Sonecc (24. Aug 2010)

Die Methode getClickCount gibts meines wissens nach nur bei Swings MouseEvent.

In swing geht es genauso, wie du es gesagt hast. "Einfach" prüfen ob getClickCount() == 2 ist


----------



## jared (24. Aug 2010)

Mein Problem ist ja das:
Bei einem Doppelklick, klickst du einmal, und dann ein zweites Mal und beim ersten mal geht er bei mir in den einen if-teil rein, der fürs markieren zuständig ist, wie erreiche ich es, das er davor nicht reingeht?? Ich hoffe ihr versteht was ich meine.

mfg


----------



## Sonecc (24. Aug 2010)

Das wirst du nur über einen Timer machen können, wobei ich es für einfacher halte, das markieren zu machen und wenn dann der 2. Klick kommt, würde ich die markierung wieder entfernen


----------



## jared (24. Aug 2010)

Dann habe ich aber ein blinken, und das ist für den User komisch. Habe jetzt eine andere Lösung, denke nicht, dass diese schön ist, aber es funktioniert. Habe zuerst probiert ein normales Attribut zu nehmen, (bool) und habe einen Trhead, den ich schlafen lege, tritt in dieser Zeit ein doppelklick auf, so setze ich die bool Attribut auf true und keine Markierung wird vorgenommen. Da dies nicht klappte, da das Attribut immer wieder auf inital gesetzt wird, habe ich es statisch gemacht und damit ging es. Ist dies sauber oder nicht??

mfg


----------



## Tomate_Salat (24. Aug 2010)

poste mal Quellcode,sonst können wir nur raten.


----------



## Gast2 (24. Aug 2010)

jared hat gesagt.:


> Wie bei SWT ja und bei Swing nein??



Ja bei SWT gibt es ein DoubleClick event und bei Swing eben nicht???

Ich denke mal du benutzt Swing!!!

Also bei MouseEvents sollte einiges beachtet werden... rechtsklick abfangen mit e.isPopupTrigger();
bei windows ist diese variable nur in mouseRelased true und bei Mac und Linux bei mousePressed...

mouseClicked würde ich gar nicht benutzen...


----------



## jared (24. Aug 2010)

von was jetzt?? von dem doppelklick zeugs oder wegen dem markieren und dem blinken??


----------



## Gast2 (24. Aug 2010)

Zeig einfach ein bischen Code... Und beschreib was du vor hast, hört sich bis jetzt alles nach einem Hack an mit dem makieren und neuen Thread starten und so weiter...


----------



## Sonecc (24. Aug 2010)

Natürlich ist das ein Hack, in Swing ist es aber auch schwer sowas zu lösen


----------



## Gast2 (24. Aug 2010)

Sonecc hat gesagt.:


> Natürlich ist das ein Hack, in Swing ist es aber auch schwer sowas zu lösen



Ich weiß ja nicht mal richtig was er genau vor hat von dem her kann ich nicht sagen ob man es anders lösen kann...


----------



## Sonecc (24. Aug 2010)

Steht ungefähr 2-3 mal in seinen Posts drin.

Er hat (vermutlich) eine Table in der der User mit einem Klick die Reihe auswählen kann.
Bei einem Doppelklick soll aber was anderes passieren, wobei nicht vorher markiert werden soll.

Also, will er genau erkennen, ob nun Doppelklick oder Einzelklick.
Ist bei Swing ja aber schwer, da Swing grundsätzlich mal jeden Klick raushaut und damit der erste Klick bei einem Doppelklick als einzelklick geworfen werden würde.

Wie ich SWT inzwischen leiden kann^^
Da ist so manches etwas einfacher


----------



## Gast2 (24. Aug 2010)

Sonecc hat gesagt.:


> Steht ungefähr 2-3 mal in seinen Posts drin.
> 
> Er hat (vermutlich) eine Table in der der User mit einem Klick die Reihe auswählen kann.
> Bei einem Doppelklick soll aber was anderes passieren, wobei nicht vorher markiert werden soll.
> ...



Ja vermutlich ist halt nicht wissen...
Das Problem wäre doch bei SWT genau das gleiche...

Einmal klicken = makieren
2mal klicken = mach was anderes ...

Schon mal irgendein Programm gesehen, welches bei einem einfachen Klick nichts macht und nach 100 ms dann etwas makiert und bei einem Doppelklick was völlig anderes macht? Hört sich für mich immer noch komisch an...


----------



## Sonecc (24. Aug 2010)

Nach kurzem nachdenken (inzwischen klappt das sogar bei mir  ) 

Eine Selection sollte eigentlich nicht im Weg stehen.

Normalerweise ist ein einfacher Klick eine Selection, ein Doppelklick das öffnen des (vorher durch den einfachen Klick ausgewählten) Objektes.
Das Objekt kann doch danach weiterhin selektiert bleiben, also sehe ich in dem Fall kein Problem darin.
Muss also im Endeffekt doch SirWayne zustimmen. Was hast du vor? Was soll beim Doppelklick passieren, was eine vorherige Selektion ausschließen würde?


----------



## jared (24. Aug 2010)

Also was ich sagen kann, dass ich es so machen muss, wegen der Kommunikation.
Habe jetzt ein weiteres Problem. wenn ich jetzt über diesem Objekt mit der Mausstehen bleibe, soll nach einer Zeit ein Popup auf gehen. Gibt es sowat in Swing so ne Art MouseMotionListener oder wie das heißt?? Oder wenn nicht, wie würdet ihr dies lösen?? oder gibt es da eine bessere Möglichkeit mit AWT?? habe nur Swing oder AWT zur auswahl.

mfg


----------



## Gast2 (24. Aug 2010)

Naja mit deinen Informationen kann man nicht gerade viel Anfangen... Kommunikation kann vielese sein, auf jeden Fall macht es keinen Sinn was du geschrieben hast und so wird auch der User verwundert sein.

Popups gehen auch nur auf wenn man eine Maustatse klickt und nicht wenn man irgendwo drüber fährt wenn man irgendwo drüber fährt dann geht eventuell ein Tooltip auf...


----------



## jared (24. Aug 2010)

ja ich meinte eig Tooltip. Wie würdet ihr dies lösen?? Habe ja in der selben Klasse schon einen Thread mit ner run-Methode.
Bestes Beispiel was ich meine: Das "mfg" wird unterringelt. Nachdem man mit dem MouseCursor drüberfährt, erscheint es nicht sofort sondern nach einem Kurzenmoment erscheint erst der Tooltip und genau das suche ich, wie ich das am besten realisiere.

mfg


----------



## Gast2 (24. Aug 2010)

How to Use Tool Tips (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)


----------



## jared (24. Aug 2010)

Ich brauche da wieder was spezielles. Nehmen wir mal an, ich müsste dies alles selbst machen, wie würdet ihr das im MouseListener implementieren??? Also das er merkt, Maus ist für z. B. 2 Sekunden über dem Objekt und dann soll was passieren. Wie würdet ihr das implementieren, das er merkt, dass die Maus für 2 Sekunden nicht bewegt wurde und über dem Objekt ist??


----------



## Gast2 (24. Aug 2010)

Kann des sein dass du kein Plan hast?? 
Solang kein Mensch weiß was du machen willst gibt es hunderte Wege...

Mach dir eine eigene Tooltip komponente und setz den TooltipManager auf 2 sec.

Mach einen MouseMotionListener und starte einen Timer...

Halte dich an Konvention und mach keine verrückten Sachen  ...


----------



## jared (24. Aug 2010)

Eine eigene Tooltip-Komponente bedeutet eine Ableitung von z. B. jbutton oder wie??


----------



## Tomate_Salat (24. Aug 2010)

wieso nutzt du nicht das vorhandene? Die tooltips kann man generell anpassen, siehe hier (Blog + Tutorial)

wieso JButton? Ich habe die letzten Punkte nur überflogen, aber ich bin mir nicht mal sicher, ob es sich um eine Tabelle handelt. Wieso hälst du deinen Code so geheim + wieso gibst du uns so wenig informationen? Je weniger wir wissen, desdo unpräzisier fällt die Antwort aus. Hellsehen kann hier keiner!


----------



## Gast2 (24. Aug 2010)

jared hat gesagt.:


> Eine eigene Tooltip-Komponente bedeutet eine Ableitung von z. B. jbutton oder wie??



Du solltest erst einmal einfach anfangen und dir Swing genauer anschauen...???:L


----------



## jared (25. Aug 2010)

SirWayne hat gesagt.:


> ...
> 
> Mach einen MouseMotionListener und starte einen Timer...



Hi!!
Kann jemand hierzu ein Beispiel posten?? Habe mit einem Timer noch nicht gearbeitet.
Brauche das gerade mit dem MouseMotionListener und Timer.

thx und mfg.


----------



## Gast2 (25. Aug 2010)

How to Use Swing Timers (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Other Swing Features)


----------



## jared (25. Aug 2010)

OK. Timer ok. Jetzt hierzu noch eine Frage. Führt der Timer immer dazu, die actionPerformed Methode auszuführen oder wie ist das??


----------



## Tomate_Salat (25. Aug 2010)

steht doch alles dar. Ich finde es gerade echt die härte, wie man so wenig informationen preisgeben kann. Das ganze über Timer zu lösen halte ich erstmal für sinnfrei :-/. Ein Blinken muss auch nicht sein (bei der Tabelle/dem Tree kann man durchaus die markierung stehen lassen, ist doch sogar besser so, dann kann der Benutzer nochmal prüfen, was er ausgewählt hat).

Aber solange du uns nicht sagen willst, was du mit welchen komponenten vorhast und uns ein Code-ausschnitt/beispiel zeigst, dann wird deine Lösung höchstwahrscheinlich ziemlich "unsauber" enden, da du wohl noch nicht soviel Erfahrung in dem Gebiet hast. 

... also, wie heist es so schön: hilf uns dir zu helfen.


----------



## Gast2 (25. Aug 2010)

Tomate_Salat hat gesagt.:


> (bei der Tabelle/dem Tree kann man durchaus die markierung stehen lassen, ist doch sogar besser so, dann kann der Benutzer nochmal prüfen, was er ausgewählt hat).
> /QUOTE]
> 
> Das witzige ist kein Mensch weiß ob es überhaupt eine Tabelle o.ä ist ...
> Das vorhaben ist mir auch noch nicht klar, aber wirds halt ein pfusch


----------



## jared (25. Aug 2010)

Ok. vergesst jetzt ma des mit dem blinken usw. bitte. Aber die ActionPerformed wird doch meines wissens nur ausgelöst, wenn ich z. B. auf einen Button klicke oder??
Habe gerade echt keinen Plan, wie ich den Timer dazu benutzen soll um herauszufinden, ob die Maus bewegt wurde oder nicht.
Könnt ihr mir erst einmal diesbezüglich auf die Sprünge helfen?? Danke.

mfg


----------



## Tomate_Salat (25. Aug 2010)

SirWayne hat gesagt.:


> Das witzige ist kein Mensch weiß ob es überhaupt eine Tabelle o.ä ist ...
> Das vorhaben ist mir auch noch nicht klar, aber wirds halt ein pfusch



Ja deswegen habe ich ja Tree und Table hingeschrieben. Ja natürlich wird es ein pfusch, wie sollen wir ihm den so konkrete Lösungsvorschläge machen? Deswegen habe ich dafür kein Verständnis :noe:


----------



## Gast2 (25. Aug 2010)

Mir langsam auch wayne ...


----------

