Как мне установить панель сверху на временной шкале? - PullRequest
0 голосов
/ 16 апреля 2020

Я хотел бы убедиться, что при нажатии кнопки вместо красной панели, перекрывающей черную панель, красная панель переходит под черную панель, чтобы уступить место зеленой панели. Короче говоря, я бы хотел, чтобы черная панель (заголовок) всегда оставалась выше всех остальных. Я пытался использовать 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...