gpt4 book ai didi

java - 如何在 JavaFX 舞台上创建自定义边框?

转载 作者:行者123 更新时间:2023-11-30 10:50:38 26 4
gpt4 key购买 nike

我正在尝试在 stage.initStyle(StageStyle.UNDECORATED);

上创建自定义边框

它不起作用,我不确定我做错了什么。

// Using Pane to able to customize children
Pane rootPane = new Pane();

// my main.css is src/main/resources
rootPane.getStylesheets().add("main.css");

// rootPane is the name of the css class
rootPane.getStyleClass().add("rootPane");

// creating the scene with the Pane layout.
Scene scene = new Scene(rootPane, model.getSceneWidth(), model.getSceneHeight());

// Fetch the file with classLoader and add css to the scene.
scene.getStylesheets().add(getClass().getClassLoader().getResource("main.css").toExternalForm());

stage.setScene(scene);
stage.show();

还有我的 main.css:

.rootPane {
-fx-border-insets: 23;
-fx-background-radius: 6;
-fx-border-radius: 6;
-fx-border-color: white;
-fx-border-style: solid;
-fx-border-width: 5;
-fx-effect: dropshadow(three-pass-box, rgba(100, 100, 100, 1), 24, 0.5, 0, 0);
-fx-background-insets: 23;
}

完整启动方法代码:

@Override
public void start(final Stage stage) throws Exception {

matrixStage = stage;
matrixStage.setTitle("null");
matrixStage.initStyle(StageStyle.UNDECORATED);

Pane rootPane = new Pane();
rootPane.getStylesheets().add("main.css");
rootPane.getStyleClass().add("rootPane");

Scene scene = new Scene(rootPane, matrixModel.getSceneWidth(), matrixModel.getSceneHeight());
scene.getStylesheets().add(getClass().getClassLoader().getResource("main.css").toExternalForm());

Canvas canvas = new Canvas();
canvas.widthProperty().bind(matrixStage.widthProperty());
canvas.heightProperty().bind(matrixStage.heightProperty());

rootPane.getChildren().add(canvas);
matrixStage.setScene(scene);
matrixStage.show();
}

在我设置 Canvas 宽度和高度并将其与 stage 属性绑定(bind)后,边框消失了。是因为 Canvas “覆盖”了自定义边框吗?它的背后还是什么?

最佳答案

对,它没有回答问题,但我已经达到了想要的效果。

我在 Canvas 上添加了一个样式:

canvas.setStyle("-fx-effect: innershadow(gaussian, #039ed3, 2, 1.0, 0, 0);"); 

将舞台设置为未装饰:

stage.initStyle(StageStyle.UNDECORATED);

然后在场景本身上创建按钮以最大化/最小化并关闭应用程序,这实际上是一个更好的解决方案。

关于java - 如何在 JavaFX 舞台上创建自定义边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34995637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com