Announcement

Collapse
No announcement yet.

Doppel- (UND) Einfachklick

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Doppel- (UND) Einfachklick

    hallo,

    hat jemand eine idee, wie ich einen doppelklick von einem einfachklick
    unterscheiden kann? ich moechte beide (!) ereignisse fuer eine komponente
    erfassen. "getClickCount()" gibt zwar fuer den doppelklick eine 2 zurueck,
    doch auch vorher eine 1 (fuer den ersten klick des doppelklicks).

    momentan hab ich das mittels timer geloest, der eben nach einem clickcount=1 noch eine doppelklick-zeit lang wartet, ob eben clickcount=2
    eintritt und dann erst reagiert.

    gruss

    thomas

  • #2
    Hallo!

    Dafür hab' ich auch noch keine saubere Lösung gefunden, aber wenn Du dabei bist, Dich darüber zu informieren, denk' auch an den Fall eines Mausrades. Unter 1.3 wird das Drehen des Mausrades als click gewertet ( Du kannst das leicht im FileChooser testen).

    HIH Rocc

    Comment


    • #3
      Thomas,

      ignoriere doch einfach den Einfachklick für Deinen MouseListener, siehe:
      http://javaalmanac.com/egs/java.awt.event/MultiClicks.html

      Rocco,

      wie man Maus-Events ausmaskiert zeigt folgendes Beispiel:
      http://javaalmanac.com/egs/java.awt.event/MouseEvents.html

      Das MouseWheelEvent gibt es erst seit 1.4.x:
      http://java.sun.com/j2se/1.4.1/docs/api/java/awt/event/MouseWheelEvent.html

      HTH,
      -jonel

      Comment


      • #4
        hi,

        das ist nicht das problem!

        es geht darum, fuer ein und dieselbe(!) komponente
        den einfach vom doppelklick zu unterscheiden!

        wo wird das gebraucht? wenn ich z.b. eine
        farbpalette habe, bei der per einfachklick die farbe gewaehlt, jedoch per doppelklick ein farbwaehler aufgehen soll.

        nur wird der "einfachklick" vom doppelklick auch uebertragen. auf diesen reagiert man natuerlich schon...

        Bsp.: auf doppelklick folgt:

        getClickCount() = 1 => einfach oder
        schon zweifach? ist nicht entscheidbar !

        getClickCount() = 2 => Doppelklick!

        gruss

        thoma

        Comment


        • #5
          Versuche mal das hier.<br>
          <pre>
          class MouseClickAdapter extends MouseAdapter {
          static final long TIMEOUT = 300;
          Runnable timer;
          Thread timerThread;

          public MouseClickAdapter() {
          timer = new Runnable() {
          public void run() {
          try {
          Thread.currentThread().sleep(TIMEOUT);
          System.out.println("Einfachklick");
          }
          catch(InterruptedException e) {
          System.out.println("Doppelklick");
          }
          }
          };
          }

          public void mouseClicked(MouseEvent e) {
          if(e.getClickCount()==1)
          (timerThread = new Thread(timer)).start();
          else if(e.getClickCount()==2) {
          if(timerThread.isAlive())
          timerThread.interrupt();
          }
          }
          }
          </pre><br>
          Es läuft zwar, ich bin mir nicht sicher, ob<br>
          dies die beste Lösung dafür ist.<br>
          Die kurze "Reaktionspause" bei Einfachklick muß man in kauf nehmen.<br>
          <br>
          Gruß,<br>
          Michae

          Comment

          Working...
          X