在我的(全屏)程序中,我在布局中显示了几个项目。我想要做的是,当我点击或点击某个项目时,将显示一个全屏幕编辑器。我们的想法是从显示的项目转换到编辑器。
当显示编辑器时,我首先在堆叠窗格的顶部显示半透明视图,其他项目下方仍然可见。所选项目应“移动”到上层,然后开始转换为其编辑器形状。关闭编辑器当然应该是一个相反的行动过程。
第一次尝试是将容器从容器移到上层,但JavaFX抱怨绑定属性。我宁愿不必编写一大堆绑定/解除绑定,所以我认为这不是路由。
我的下一次尝试是这样的:
private volatile FullScreenService fullscreenService;
private void showFullPhoto(MouseEvent e) {
FullScreenService service = fullscreenService;
if (service != null) {
try {
Node node = (Node) e.getSource();
ImageView photoView = (ImageView)node.lookup("#image");
Image image = photoView.getImage();
Pane pane = new Pane();
pane.setPrefSize(1920d, 1080d);
ImageView copy = new ImageView(image);
copy.setRotate(node.getRotate());
node.setVisible(false);
Bounds bounds = photoView.localToScene(photoView.getBoundsInLocal());
copy.setLayoutX(bounds.getMinX());
copy.setLayoutY(bounds.getMinY());
pane.getChildren().add(copy);
service.requestFullScreen(pane);
} catch (InUseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
我们的想法是隐藏原始视图并“克隆”应该显示的部分(然后转换)。在这种情况下,我从照片中提取图像部分(也有边框和标题),并在编辑器屏幕上进行复制。
然而,图像的位置与原始位置不完全匹配,它会偏离几个像素,使图像“跳跃”。
我已经创建了与屏幕大小完全相同的窗格,所以我认为我可以假设场景坐标与新节点的坐标相同。
提出我的问题:给定两个重叠窗格,如何确保节点完全位于另一个节点之上?