在JavaFX中创建过多的EventHandler

时间:2018-03-27 19:30:55

标签: java javafx desktop-application

我想让我的JavaFX窗口可拖动。为了做到这一点,我创建了一个类,为每个场景创建 MouseListener 来处理拖动:

public static void setDragListener(){
    root.setOnMousePressed(event -> {
        xOffset = event.getSceneX();
        yOffset = event.getSceneY();
    });
    root.setOnMouseDragged(event -> {
        stage.setX(event.getScreenX() - xOffset);
        stage.setY(event.getScreenY() - yOffset);
    });
}

所以,当我进入一个新窗口时,我会更改当前场景的根目录并创建新的 MouseListeners

void goTo(String path, ActionEvent actionEvent){
    try {
        Parent parent = FXMLLoader.load(getClass().getResource(path));
        Scene scene = new Scene(parent);
        WindowDrag.setRoot(parent);
        WindowDrag.setDragListener();

        Stage window = (Stage)((Node)actionEvent.getSource()).getScene().getWindow();
        window.setScene(scene);
        window.show();
    } catch (IOException e) {
        e.getMessage();
    }
}

我担心的是离开之前的听众。是否可以通过在场景之间切换来耗尽内存?

0 个答案:

没有答案