java在Windows上移动父阶段时移动子阶段
我想知道,当我们在Windows上移动父阶段时,是否有办法将JavaFX子阶段与其父阶段一起移动。事实上,在MacOS上,这似乎是默认行为。正如你在这段视频中看到的:https://imgur.com/a/r3qIklu,我可以独立移动缩略图场景,当我移动主窗口时,缩略图(顺便说一句,它是主窗口的子场景)仍然“附加”到父窗口并跟随它
然而,在Windows上,正如您在这里看到的:https://imgur.com/a/SPEkYJ2,结果是不一样的。移动父阶段时,缩略图将保持在其当前位置。如何在Windows上重现MacOS的行为
以下是我的阶段的初始化方式,仅供参考:
public void start(Stage primaryStage) {
//App's main stage
Parent root = FXMLLoader.load(getClass().getResource("../spaception.fxml"));
Scene scene = new Scene(root, 1400, 700);
primaryStage.setScene(scene);
primaryStage.show();
//...
//Child stage (Thumbnail)
Parent thumbnailRoot = FXMLLoader.load(getClass().getResource("../thumbnail.fxml"));
Stage thumbnailStage = new Stage();
thumbnailStage.initOwner(primaryStage);
thumbnailStage.initStyle(StageStyle.UNDECORATED);
thumbnailStage.setX(primaryStage.getX()+1100);
thumbnailStage.setY(primaryStage.getY()+540);
Scene scene = new Scene(thumbnailRoot, 250, 145);
thumbnailStage.setScene(scene);
thumbnailStage.show();
}
# 1 楼答案
将root和thumbnailRoot放在一个常规的Pane中(这相当于Swing中的空布局)
要允许用户移动thumbnailRoot,请向其添加鼠标事件处理程序以进行按下和拖动,并保留跟踪thumbnailRoot位置和鼠标拖动的专用字段
简单示例实现:
您可以在一个应用程序中完成相同的功能。fxml文件:只需将背景和缩略图放在窗格中即可。如果愿意,也可以在那里添加鼠标事件处理程序
这是我用作舞台背景的图片。巴布亚新几内亚:
这是我用作缩略图背景的图像。巴布亚新几内亚: