首页 > 解决方案 > 堆叠新阶段而不是叠加

问题描述

每当我像这样一次创建多个阶段时

for (Object o : tableView.getSelectionModel().getSelectedItems())
{
    if (o != null)
    {
        try
        {
            FXMLLoader  fxmlLoader  = new FXMLLoader(getClass().getResource("/gui/fxml/Stage.fxml"));
            Parent      root1;

            root1 = (Parent) fxmlLoader.load();

            Stage stage = new Stage();
            stage.initStyle(StageStyle.DECORATED);
            stage.setScene(new Scene(root1));
            stage.show();
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

舞台布置在一个位置,因此它们是重叠的。

叠加阶段截图: 叠加阶段的屏幕截图

我的目标是将它们堆叠起来,就像这样的 Windows 警报:

堆叠阶段: 堆叠阶段

我怎样才能做到这一点?

标签: javajavafx

解决方案


通过使用stage.setX()and.setY()你可以很容易地实现这一点,如果你像这样持续增加 x 和 y 值

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        int x = 400;
        int y = 400;
        for (int i = 0; i < 5; i++) {
            VBox vBox = new VBox();
            vBox.setAlignment(Pos.CENTER);
            vBox.getChildren().addAll(new Label("ALERT!!! ALERT!!!"), new Label("Label #:"+i));

            Stage stage  = new Stage();
            stage.setX(x);
            stage.setY(y);
            stage.setScene(new Scene(vBox));
            stage.show();

            x+=20;
            y+=20;
        }
    }
    public static void main(String[] args) { launch(args); }
}

推荐阅读