MouseEntered mit X und Y Koordinaten

Dieses Thema MouseEntered mit X und Y Koordinaten im Forum "Allgemeine Java-Themen" wurde erstellt von HiImSkulte, 4. Jan. 2017.

Thema: MouseEntered mit X und Y Koordinaten Hallo liebe Community, ich bin gerade dabei, etwas in Java herumzutesten, und bin auf ein Problem gestoßen, wobei...

  1. Hallo liebe Community,
    ich bin gerade dabei, etwas in Java herumzutesten, und bin auf ein Problem gestoßen, wobei ich nicht weiß, wieso es so ist oder wie ich es lösen soll, da Google Recherche nichts gebracht hat. (Trifft nicht auf mein spezielles Programm zu)

    Und zwar,
    im mouseMoved Event wird nach der X und Y Koordinate abgefragt um die Position des Cursors zu ermitteln.
    Nun kann ich mit folgendem Code bei mouseClicked, mousePressed und mouseReleased bequem abfragen ob sich die Maus auf einem Knopf oder ähnlichem befindet und eine Anweisung reinschreiben:
    Code (Java):
    @Override
        public void mouseClicked(MouseEvent e) {
            if ((mousex >= 200 && mousex <= 400) && (mousey >= 50 && mousey <= 150)) {
                playClicked = true;
            }
        }
    Wenn ich allerdings die gleiche If-Abfrage bei mouseEntered reinschreibe, passiert nichts.

    Meine Frage:
    Kann ich bei mouseEntered mit X und Y Koordinaten des Mauszeigers eine Anweisung ausführen lassen?

    Dieser Code funktioniert nicht:
    Code (Java):
    public void mouseEntered(MouseEvent e) {
            if ((mousex >= 200 && mousex <= 400) && (mousey >= 50 && mousey <= 150)) {
                playClicked = true;
            }  
        }

    Mein Ziel ist es, dass wenn der Cursor über einen Knopf geht, die Farben von dem Knopf geändert werden.
    Ich hoffe es war verständlich formuliert, danke für Rückmeldungen! :)
     
  2. Vielleicht helfen dir diese Java-Grundlagen weiter --> *Klick*
  3. Hey HiImSkulte,

    nicht so kompliziert denken. Die Koordinatenabfrage macht die Methode schon intern für dich! :)
    Du musst nur prüfen welche Komponente es ist.

    Also bspw:

    Code (Java):

    public void mouseEntered(MouseEvent e)
    {
         if(e.getSource() == mySuperCoolButton)
         {
                mySuperCoolButton.setBackground(Color.RED);
         }
    }
     
    Gruß
    Robert
     
  4. @Robat
    Habe den Button einfach per g.fillRoundRect(...); gemacht. (Graphics = g), deswegen wollte ich es per X und Y machen weil ich doch keine Variable für der Button festlegen kann.
    Danke!
     
  5. Hast du alle deine Rechtecke in einer Klasse oder für jedes Rechteck eine eigene gemacht?

    Wenn du zB alle in einer Klasse hast, bräuchtest du nur die Methode mouseMoved. Die trackt ja jede Bewegung auf der grafischen Oberfläche deiner Klasse.
     
  6. Hey, was ich mich frage ist, wo du mousex und mousey herbekommst, wenn nicht von dem event... :D
     
  7. Habe mousex und mousey von der mouseMoved Methode, und habe alle Rechtecke und was gezeichnet wird in einer anderen Klasse. Bei mouseMoved macht er es aber nur wenn sich die Maus auf dem Knopf hin und her bewegt. Bei mouseEntered aber in einem Bereich dauerhaft bis sie wieder rausgeht.

    Gruß Skulte
     
  8. Kannst du ein kleines Bespiel posten?
     
  9. Also, meine mouseMoved Methode:
    Code (Java):
    public static void mouseMoved(mouseEvent e) {
         mousex = e.getX();
         mousey = e.getY();
    }
     
    Habe es jetzt hinbekommen, mit folgendem Code:
    Code (Java):
        public void mouseMoved(MouseEvent e) {
            mousex = e.getX();
            mousey = e.getY();
           
            // update button hovered
            if ((mousex >= DrawObjects.menuButtonBackgroundX && mousex <= DrawObjects.menuButtonBackgroundX + 50) && (mousey >= 18 && mousey <= 68)) {
                DrawObjects.menuButtonBackground = 0xF2F2F2;
                DrawObjects.menuButtonLines = 0x3E3E42;
            } else if ((mousex != DrawObjects.menuButtonBackgroundX && mousex != DrawObjects.menuButtonBackgroundX + 50) && (mousey != 18 && mousey != 68)) {
                DrawObjects.menuButtonBackground = 0x3E3E42;
                DrawObjects.menuButtonLines = 0xF2F2F2;
            }
        }
    Danke! :)
     
  10. KOSTENLOSES Java-Grundlagen Training im Wert von 39 € Sichere dir hier den kostenlosen Zugriff auf umfangreiches Java-Know How und starte richtig durch!