2016-04-30 13 views
3

Ich versuche, Event-Handling und machte ein Beispiel mit einem fxml Knopf, der so aussah zu lernen:JavaFX - Griff MouseEntered Ereignis auf einer Schaltfläche (mit fxml)

<Button fx:id="button" onAction="#Handle"> 

und die folgende Handler-Methode in meinem Controller:

@FXML 
private void Handle() { 

    btn_welcome.setOnMouseClicked((event) -> { 

     System.out.println("test"); 

    }); 

Bis jetzt funktioniert das gut. Jetzt würde ich gerne mit der Eingabe der Schaltfläche mit der Maus umgehen. Ich versuchte

@FXML 
private void Handle() { 

    btn_welcome.setOnMouseEntered((event) -> { 

     System.out.println("test"); 

    }); 

aber es scheint nicht zu funktionieren.

Antwort

4

Sie sollten keinen anderen Listener auf ein Steuerelement setzen, damit es die Funktion ausführt. Was Sie tun, ist, dass Sie jedes Mal, wenn Sie Ihre Handle-Methode aufrufen, einen anderen Listener setzen.

Verwendung onMouseEntered="#methodToBeCalled" in fxml

und in Code erstellen, diese Methode

@FXML 
public void methodToBeCalled(){ 
    System.out.println("mouse entered"); 
} 

Sein dass simple.Method genannt wird, und alles, was Sie tun musste, ist id/Methodenname und Verwendung angeben Anmerkung.

+0

Oh wow, es ist wirklich so einfach. Vielen Dank! – Mark

+0

Ich empfehle Ihnen, SceneBuilder herunterzuladen und zu verwenden, Sie werden javafx schneller lernen und produktiver sein. –

-1

können Sie auch versuchen, diese

btn_welcome.addEventHandler(MouseEvent.MOUSE_ENTERED, 
     new EventHandler<MouseEvent>() { 
      @Override 
      public void handle(MouseEvent e) { 
      //your code here 
      } 
     }); 
Verwandte Themen