Instance OF Problem

  • Themenstarter Themenstarter Gelöschtes Mitglied 65838
  • Beginndatum Beginndatum
G

Gelöschtes Mitglied 65838

Gast
Java:
        this.addEventFilter(MouseEvent.MOUSE_MOVED, e -> {
            if( e.getTarget() instanceof Button) {
              
            }
ich habe diesen Eventhandler wie kann ich dann in der if abzweigung dann auf die Methoden des Buttons zugreifen ich weis ja dass es ein Button sein muss weil es instance of ist

also dass ich dann

e.getText()

machen kann um an den Text des Buttons zu kommen
 
Du musst dem Compiler sagen, dass es sich um ein Objekt des Typs Button handelt (casten):
Java:
Button button = (Button) e.getTarget();
button.getText();
// oder in einem
// ((Button) e.getTarget()).getText();
 
Du musst dem Compiler sagen, dass es sich um ein Objekt des Typs Button handelt (casten):
Java:
Button button = (Button) e.getTarget();
button.getText();
// oder in einem
// ((Button) e.getTarget()).getText();
jaaaa nice manchmal sieht man den Wald vor Augen nicht xD
 
An der Stelle erlaube ich mir dann noch den Hinweis auf JEP 305 / 375 / 394 - Pattern Matching for instanceof:
Ab Java 14 als Preview (305), in Java 15 als Second Preview (375) und Final in Java 16 (394) verfügbar:

Um es kurz zu umreissen:
Java:
if (e.getTarget() instanceof Button button) {
    // hier einfach die lokale Variable button nutzen
    // ...
}
 
An der Stelle erlaube ich mir dann noch den Hinweis auf JEP 305 / 375 / 394 - Pattern Matching for instanceof:
Ab Java 14 als Preview (305), in Java 15 als Second Preview (375) und Final in Java 16 (394) verfügbar:

Um es kurz zu umreissen:
Java:
if (e.getTarget() instanceof Button button) {
    // hier einfach die lokale Variable button nutzen
    // ...
}
Java:
if (animal instanceof Cat cat) {
    cat.meow();
} else if(animal instanceof Dog dog) {
    dog.woof();
}
Meintest du das da dass ich dann bei mir das so schreiben sollte


Java:
        this.addEventFilter(MouseEvent.MOUSE_ENTERED_TARGET, e -> {
          
            if( e.getTarget() instanceof ImageView img) {
                System.out.println(img);
        }

        });

weil dann kommt die Meldung "you are using a preview feature it may not be supported in future

ich habe java 15
und javafx 15


weil ohne casts sieht das natürlich schon schicker aus 😀
 

Zurück
Oben