如何在JavaFX应用程序中加载的FXML文件中显示元素?

问题描述 投票:0回答:1

我需要了解如何显示插入由主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

java css javafx fxml
1个回答
0
投票

你似乎混淆了arcHeight / arcWidth属性和heightwidth / Rectangle属性。根据文档,arcHeight财产:

定义矩形四个角处的圆弧垂直直径。当且仅当弧宽和弧高属性都大于0.0时,矩形将具有圆角。

height财产:

定义矩形的高度。

arcWidthwidth属性有类似的文档。

widthheight属性都有一个默认值0.0。由于您没有为Rectangle定义宽度或高度,因此无需渲染任何内容。查看JavaFX CSS Reference GuideRectangle文档,以及ShapeNode,没有办法从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证实了这一点。与widthheight不同,StyleablePropertyarcWidth都不是arcHeight的一个例子。

© www.soinside.com 2019 - 2024. All rights reserved.