0

我正在开发一个具有主边框窗格的 Javafx 应用程序。应用程序的顶部和右侧有不同的窗格。该中心有一个主 StackPane,我根据需要在其上添加和删除窗格。我创建了一个滑动动画,当另一个窗格进入中间的这个堆栈窗格时,它将滑动一个窗格。

问题是滑动动画基于每个窗格的 translateX 属性。这些属性从主边框窗格的一端延伸到另一端。这意味着当我滑入和滑出时,窗格也会越过侧面主边框的面板。

我不知道如何解决这个问题。我考虑放置某种组来封装我要添加到中心的窗格,从而将动画保持在组中的节点内。问题在于组不可调整大小,因此当我展开和缩小窗口时,窗格不会随之增长。我的临时解决方法是在动画滑动时使侧面板不可见。但是,我想找到一种方法来封装这些节点,同时允许它们仍然适合中心的大小,或者找到一种方法来设置我的 translateX 属性以仅填充中心堆栈的侧面。

任何的意见都将会有帮助。谢谢!

这是我的滑动功能:

    root.getChildren().add(pane1);

    KeyFrame start = new KeyFrame(Duration.ZERO,
            new KeyValue(pane1.translateXProperty(), root.getWidth()),
            new KeyValue(pane2.translateXProperty(), 0));
    KeyFrame end = new KeyFrame(Duration.seconds(1),
            new KeyValue(pane1.translateXProperty(), 0),
            new KeyValue(pane2.translateXProperty(), -root.getWidth()));
    Timeline slide = new Timeline(start, end);
    slide.setOnFinished(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {
            root.getChildren().remove(pane2);
            for(Node b : buttonBar.getButtons()){
                b.setDisable(false);
                dvs.setVisible(true);
            }
        }

这里,root 是这些节点所在的外部窗格,pane1 是目标窗格,pane2 是被刷出的窗格。

4

0 回答 0