簡體   English   中英

JavaFX - 如何檢查鼠標是否已進入和/或退出窗格?

[英]JavaFX - How to check if mouse is has entered and or exited a Pane?

我在 Javafx 中有一個窗格,它希望在鼠標進入其邊界時動畫,並且我希望在鼠標退出窗格后動畫停止。 我理解這需要一個聽眾,但我找到的所有答案似乎只與 java.awt 有關

您可以使用Node.setOnMouseEntered()Node.setOnMouseExited()來注冊開始或停止動畫的事件處理程序。 這是一個簡單的例子:

public class MainTest extends Application {
    public void start(Stage primaryStage) {
        Pane pane = new Pane();
        pane.setStyle("-fx-background-color: #ff0000");
        pane.setLayoutX(100);
        pane.setLayoutY(100);
        pane.setPrefSize(300,300);
        pane.setOnMouseEntered(event -> startAnimation());
        pane.setOnMouseExited(event -> stopAnimation());

        Scene scene = new Scene(new Pane(pane), 500, 500);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    private void stopAnimation() {
        System.out.println("stop");
        // do whatever you need to start your animation
    }

    private void startAnimation() {
        System.out.println("start");
        // do whatever you need to stop your animation
    }
}

或者您可以使用 *.fxml 文件鏈和您的控制器類來制作它:

  1. 將您的 fxml 文件添加到 Pane 字符串中的兩個事件onMouseEntered="#onMouseInto" onMouseExited="#onMouseOut"使其像
<AnchorPane fx:id="rootPane" onMouseEntered="#onMouseInto" onMouseExited="#onMouseOut" prefHeight="400.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="yourPackage.YourControllerClass">
  1. 將方法事件添加到控制器類中。 例如,我將更改窗格的背景顏色,但您可以確定做任何您想做的事情;)
    @FXML
    public AnchorPane rootPane;

    public void onMouseInto(MouseEvent mouseEvent) {
        //Your own event when cursor is gonna into the rootPane
        rootPane.setStyle("-fx-background-color: #1F292E");
    }

    public void onMouseOut(MouseEvent mouseEvent) {
        //Your own event when cursor is gonna out the rootPane
        rootPane.setStyle("-fx-background-color: #C792EA");
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM