有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在JavaFX中创建太多事件处理程序

我想让我的JavaFX windows成为可拖动的。为了做到这一点,我创建了一个类,为每个场景创建鼠标侦听器,以处理拖动:

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);
    });
}

因此,当我转到一个新窗口时,我会更改当前场景的根,并创建新的鼠标侦听器

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) 个答案