如何克隆节点以准确显示在不同窗格的顶部

时间:2016-07-02 11:45:14

标签: javafx-8

在我的(全屏)程序中,我在布局中显示了几个项目。我想要做的是,当我点击或点击某个项目时,将显示一个全屏幕编辑器。我们的想法是从显示的项目转换到编辑器。

当显示编辑器时,我首先在堆叠窗格的顶部显示半透明视图,其他项目下方仍然可见。所选项目应“移动”到上层,然后开始转换为其编辑器形状。关闭编辑器当然应该是一个相反的行动过程。

第一次尝试是将容器从容器移到上层,但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();
        }
    }
}

我们的想法是隐藏原始视图并“克隆”应该显示的部分(然后转换)。在这种情况下,我从照片中提取图像部分(也有边框和标题),并在编辑器屏幕上进行复制。

然而,图像的位置与原始位置不完全匹配,它会偏离几个像素,使图像“跳跃”。

我已经创建了与屏幕大小完全相同的窗格,所以我认为我可以假设场景坐标与新节点的坐标相同。

提出我的问题:给定两个重叠窗格,如何确保节点完全位于另一个节点之上?

0 个答案:

没有答案