Announcement

Collapse
No announcement yet.

Mausposition auf dem Bildschirm feststellen

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

  • Mausposition auf dem Bildschirm feststellen

    Hi
    ich habe ein Problem, ich will herausfinden, wie weit sich meine Maus bewegt hat. Normalerweise hat man ja den Punkt an dem die Mouse Geklickt wurde, und die Position an der sie losgelassen wurde, und kann dann per differenz herausfinden, wie weit die beiden Punkte auseinanderliegen. ABER bei mir ist es so, dass ich mich in einem Panel befinde, das mit der Maus bewegt werden soll. Die funktion mouseEvent e.getX() liefert mir immer den relativen wert zum linken rand meines Panels. Wenn nun das Panel auf dem Bildschirm bewegt wird, dann ändert sich der Abstand zum Linken Rand und die Differenz stimt nicht mehr.

    Meine Frage: Gibt es eine Möglichkeit die Absolute Mausposition auf dem Bildschirm festzustellen. Also den Abstand zum oberen linken Bildschirmrand??????
    Geht das, oder weis jemand einen anderen ausweg aus meinem Problem??? (Soweit ihr verstanden habt was ich meine :-) )

    Hoffe auf Hilfe

    Tobias

  • #2
    Du kannst Dich ja rekursiv durch die Container durchfragen: Wenn die Maus relativ zum Panel sich nicht bewegt, bewegt sich das Panel zu seinem Container, oder dieser innerhalb seines Containers ... Irgendwann in der Hierarchie hast Du auch das Fenster, und dessen Container (der Bildschirm) kann sich zwar auch noch bewegen, beim Saubermachen oder so , aber fuer Programme bewegt sich der nicht mehr.<p>
    Vielleicht gibt es auch eine andere Moeglichkeit, ueber Hilfsklassen im API einen MouseEvent in absoluten Koordinaten anzugeben, das find ich aber auf der Stelle nicht.<p>
    Gruss, Marc

    Comment


    • #3
      Nachtrag: SwingUtilities.convertMouseEvent(Component source, MouseEvent event, Component dest) sollte genau das machen, mit source = Panel (aus dem MouseEvent) und dest = Frame. Vorausgesetzt, Du nutzt ein Java1.2 mit Swing

      Comment


      • #4
        Du kannst zum einen von Deinem MouseEvent abfragen, auf welcher Component es abgefeuert wurde (public Component getComponent()). Von dieser Component kannst Du die absolute Position auf dem Bildschirm (public Point getLocationOnScreen()) erfragen. Danach brauchst Du nur noch rechnen<br><br>

        Point p = e.getComponent().getLocationOnScreen();<br>
        int posX = p.getX()+ e.getX();<br>
        int posY = p.getY()+ e.getY();<br><br>
        wobei gilt, dass e Dein MouseEvent ist.<br><br>Jürge

        Comment

        Working...
        X