Как показать элементы файла FXML, загруженного в приложение JavaFX? - PullRequest
0 голосов
/ 15 февраля 2019

Мне нужно понять, как показывать элементы, вставленные в файл FXML, загруженный приложением Main javaFX, моя основная программа 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 и не вижу прямоугольника!Должен ли я использовать регион вместо прямоугольника?Если да, как я могу дать ему ширину и высоту?В справке по JavaFX CSS он не дает мне инструкции для установки ширины и высоты, как -fx-arc-height прямоугольника.

1 Ответ

0 голосов
/ 15 февраля 2019

Вы, похоже, путаете свойства arcHeight / arcWidth и свойства height / width Rectangle.Согласно документации, свойство arcHeight:

Определяет вертикальный диаметр дуги в четырех углах прямоугольника.Прямоугольник будет иметь закругленные углы тогда и только тогда, когда оба свойства ширины и высоты дуги больше, чем 0.0.

И свойство height:

Определяет высоту прямоугольника.

Свойства arcWidth и width имеют аналогичную документацию.

И width, и height свойства имеют значение по умолчанию 0.0.Поскольку вы не определяете ширину или высоту для Rectangle, визуализировать нечего.Глядя на документацию JavaFX CSS для Rectangle, наряду с Shape и Node, нет способа установить ширину или высоту Rectangle из CSS 1 .Вам нужно будет сделать это в коде или в файле 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>

И вы, вероятно, захотите удалить или хотя бы изменить значения -fx-arc-width и -fx-arc-height в файле CSS.


1.Глядя на реализацию подтверждает это.Ни width, ни height не являются экземплярами StyleableProperty, в отличие от arcWidth и arcHeight.

...