我需要了解如何显示插入由主javaFX应用程序加载的FXML文件中的元素,我的JavaFX应用程序主要是:
// imports omitted
public class Main extends Application {
@Override
public void start(Stage window) throws IOException {
Parent root = FXMLLoader.load(getClass().getResource("Standard.fxml"));
Scene mainGraphic = new Scene(root,500,500);
window.setTitle("Prova con FXML");
window.setMinHeight(500);
window.setMinWidth(500);
window.setScene(mainGraphic);
window.show();
}
}
这个文件工作并正确加载FXML文件Standard.fxml
,问题是它没有显示顶部矩形,这是FXML文件:
// imports omitted
<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.myname.mypackage.Controller">
<stylesheets>
<URL value="@Standard.css"/>
</stylesheets>
<Rectangle id="ParteSuperiore"/>
</AnchorPane>
我显然已经创建了CSS文件并使用我想要的属性设置元素样式,这是CSS:
#AnchorPane {
-fx-background-color: rgb(224, 246, 255);
}
#ParteSuperiore {
-fx-fill: rgb(255, 145, 28);
-fx-arc-height: 100px;
-fx-arc-width: 100px;
}
这个文件有什么问题?我只能看到AnchorPane的背景颜色!我试图将Rectangle
放在<children>
元素中,但是我继续只看到AnchorPane的背景颜色,我没有看到矩形!我应该使用Region而不是Rectangle吗?如果是,我该如何给它宽度和高度?在JavaFX CSS reference它没有给我设置宽度和高度的指令,如矩形的-fx-arc-height
。
你似乎混淆了arcHeight
/ arcWidth
属性和height
的width
/ Rectangle
属性。根据文档,arcHeight
财产:
定义矩形四个角处的圆弧垂直直径。当且仅当弧宽和弧高属性都大于
0.0
时,矩形将具有圆角。
和height
财产:
定义矩形的高度。
arcWidth
和width
属性有类似的文档。
width
和height
属性都有一个默认值0.0
。由于您没有为Rectangle
定义宽度或高度,因此无需渲染任何内容。查看JavaFX CSS Reference Guide的Rectangle
文档,以及Shape
和Node
,没有办法从CSS1设置Rectangle
的宽度或高度。您需要在代码或FXML文件中执行此操作。例如:
// imports omitted
<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.myname.mypackage.Controller">
<stylesheets>
<URL value="@Standard.css"/>
</stylesheets>
<Rectangle id="ParteSuperiore" width="100" height="100"/>
</AnchorPane>
您可能希望删除或至少更改CSS文件中的-fx-arc-width
和-fx-arc-height
值。
看着implementation证实了这一点。与width
和height
不同,StyleableProperty
和arcWidth
都不是arcHeight
的一个例子。