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

时间:2019-02-15 12:16:52

标签: java css javafx fxml


我需要了解如何显示由Main 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的背景色,而看不到Rectangle!我应该使用区域而不是矩形吗?如果可以,我该如何指定宽度和高度?在JavaFX CSS reference中,并没有像矩形-fx-arc-height那样给我设置宽度和高度的指示。

1 个答案:

答案 0 :(得分:0)

您似乎在混淆RectanglearcHeight / arcWidth属性和JavaFX CSS Reference Guideheight / width属性。根据文档,arcHeight属性:

  

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

还有height属性:

  

定义矩形的高度。

arcWidthwidth属性具有相似的文档。

widthheight属性的默认值均为0.0。由于您没有为Rectangle定义宽度或高度,因此无需渲染任何内容。查看Rectangle的{​​{3}}文档以及ShapeNode,无法从Rectangle设置// 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 1 。您需要在代码或FXML文件中执行此操作。例如:

-fx-arc-width

您可能想要删除或至少更改CSS文件中的-fx-arc-heightwidth值。


1。查看implementation可以确认这一点。与heightStyleableProperty不同,arcWidtharcHeight都不是bool is_socket(LPVOID s) { if (GetFileType(s) != FILE_TYPE_PIPE) return false; return !GetNamedPipeInfo(s, NULL, NULL, NULL, NULL); } 的实例。