父窗格应调整大小到旋转子窗格的外边界

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了父窗格应调整大小到旋转子窗格的外边界相关的知识,希望对你有一定的参考价值。

我想将窗格调整为旋转的子窗格。

码:

public class Test extends Application {
    public void start(final Stage stage) throws Exception {
        Pane p1 = new Pane();
        p1.setBackground(new Background(new BackgroundFill(Color.CYAN, null, null)));
        p1.setPrefSize(100, 100);
        p1.setMinSize(100, 100);
        p1.setMaxSize(100, 100);
        p1.setRotate(45);

        Pane p2 = new Pane(p1);
        p2.setBackground(new Background(new BackgroundFill(Color.RED, null, null)));
        p2.setLayoutX(150);
        p2.setLayoutY(150);

        Group root = new Group(p2);
        Scene scene = new Scene(root);

        stage.setTitle("Pane Test");
        stage.setScene(scene);
        stage.setWidth(400);
        stage.setHeight(400);
        stage.setResizable(false);
        stage.show();
    }

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

我想让父窗格完全覆盖孩子所遮挡的区域。

答案

我通过将Pane p1放入一个组并将该组放入边框而不是使用位置中心的Pane p2来实现它。也许不是最好的解决方案,因为我正在使用额外的节点,但它可以工作。

public class Test extends Application {

    public void start(final Stage stage) throws Exception {
        Pane p1 = new Pane();
        p1.setBackground(new Background(new BackgroundFill(Color.CYAN, null, null)));
        p1.setPrefSize(100, 100);
        p1.setMinSize(100, 100);
        p1.setMaxSize(100, 100);
        p1.setRotate(45);

        Group g = new Group(p1);

        BorderPane.setAlignment(g, Pos.CENTER);

        BorderPane p2 = new BorderPane(g);

        p2.setBackground(new Background(new BackgroundFill(Color.RED, null, null)));
        p2.setLayoutX(150);
        p2.setLayoutY(150);

        Group root = new Group(p2);
        Scene scene = new Scene(root);

        stage.setTitle("Pane Test");
        stage.setScene(scene);
        stage.setWidth(400);
        stage.setHeight(400);
        stage.setResizable(false);
        stage.show();


        p1.setRotate(20);
    }

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

}

以上是关于父窗格应调整大小到旋转子窗格的外边界的主要内容,如果未能解决你的问题,请参考以下文章

如何使 JavaFX 窗格适应其内容的大小?

缓动/过渡后窗格未调整大小

无法调整 Access 2007 导航窗格的大小

当显示窗格的实时调整大小时,它在拖动时很困难,并且窗格顶部在释放后被隐藏

在 Xcode 中调整窗格大小

JavaFX 获取窗格的首选大小