首页 > 解决方案 > 如何在时间线期间在顶部设置窗格?

问题描述

我想确保当您按下按钮而不是红色窗格与黑色窗格重叠时,红色窗格位于黑色窗格下方,让位于绿色面板。简而言之,我想让黑色窗格(标题)始终保持在其他所有人之上。我尝试使用 toback() 和 toFront(),但它并没有改变任何东西。我也试过 setViewOrder() 但也没有结果。

以下是代码:

import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import javafx.util.Duration;

public class Main extends Application {

@Override
public void start(Stage primaryStage) throws Exception{
    primaryStage.setTitle("Prova");

    Pane mainPane=new Pane();

    Pane header=new Pane();
    header.setPrefSize(300, 100);
    header.getStyleClass().add("header");
    header.setViewOrder(1);

    Pane main=new Pane();
    main.setLayoutY(100);
    main.setPrefSize(300, 200);
    main.getStyleClass().add("main");

    Pane p1=new Pane();
    p1.getStyleClass().add("p1");
    p1.setPrefSize(300,200);
    p1.setViewOrder(-1);
    Pane p2=new Pane();
    p2.getStyleClass().add("p2");
    p2.setPrefSize(300,200);
    p2.setViewOrder(-1);

    main.getChildren().addAll(p1);

    Button b=new Button();
    b.setOnAction(e -> {
        main.getChildren().addAll(p2);
        Timeline timeline = new Timeline(
                new KeyFrame(Duration.millis(0),    new KeyValue(p1.layoutYProperty(), p1.getLayoutY())),
                new KeyFrame(Duration.millis(800), new KeyValue(p1.layoutYProperty(), p1.getLayoutY()-200)),
                new KeyFrame(Duration.millis(0),    new KeyValue(p2.layoutYProperty(), p2.getLayoutY()+200)),
                new KeyFrame(Duration.millis(800), new KeyValue(p2.layoutYProperty(), p2.getLayoutY()))
        );
        timeline.play();
    });

    mainPane.getChildren().addAll(header, b, main);

    Scene scene = new Scene(mainPane, 300, 275);
    scene.getStylesheets().add("style.css");

    primaryStage.setScene(scene);
    primaryStage.show();
}


public static void main(String[] args) {
    launch(args);
}
}

样式.css:

.header {
     -fx-background-color: #0b0b0b;
}
.main {
     -fx-background-color: #121212;
}

.p1 {
     -fx-background-color: red;
}
.p2 {
     -fx-background-color: green;
}

标签: javajavafx

解决方案


推荐阅读