Я определил FXML с GridPane из 8 строк, который содержит следующие компоненты (определения FXML и CSS приведены в конце этой темы):
- 2 флажка,
- 2 этикетки,
- 2 этикетки с регионом и
- 2 кнопки с регионом
Регион здесь используется для загрузки изображений, что делается с помощью стиля CSS. Для каждого набора компонентов, определенных выше (например, 2 флажка), я беру один и увеличиваю его размер, используя стиль -fx-font-size. В частности, я определяю размер шрифта как "1.3xDefault_System_Font_Size (12)". Теги (INC) и (DEF) в тексте каждого компонента используются для описания того, увеличивается ли размер шрифта или остается значение по умолчанию.
Как видно из приведенного выше снимка экрана, метка флажка увеличилась, а само поле — нет. То же самое относится и к изображениям, их размер не увеличился, а увеличился размер метки.
Ситуация усугубляется, когда я изменяю размер шрифта по умолчанию в .root:
.root{
-fx-font-size: 28;
}
В приведенном выше примере, поскольку я изменил размер шрифта по умолчанию с 12 на 28, я ожидаю, что все метки и изображения изменят свой размер в соответствии с этим новым размером. Размер изображения определяется параметром -fx-background-size, который равен 4em.
Однако все метки увеличиваются правильно, но изображения увеличиваются правильно только на тех узлах с тегом DEF. То же самое относится и к флажку, где его метка и поле увеличены на DEF, в то время как размер метки только с тегом INC увеличился правильно, а поле осталось маленьким.
Есть ли способ сделать изображения и флажок флажка, чтобы правильно увеличить их размер? Это баг, или я что-то не так делаю?
FXML: панель сетки
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.Region?>
<?import javafx.scene.layout.RowConstraints?>
<GridPane stylesheets="@css/Test.css" vgap="5.0" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ebay.client.controller.SettingsScreenController">
<children>
<CheckBox nodeOrientation="RIGHT_TO_LEFT" styleClass="increased_font" text="CheckBox (Inc)" GridPane.rowIndex="1" />
<CheckBox nodeOrientation="RIGHT_TO_LEFT" text="CheckBox (Def)" GridPane.rowIndex="2" />
<Label cache="true" styleClass="increased_font" text="Label (Inc)" GridPane.rowIndex="3" />
<Label cache="true" text="Label (Def)" GridPane.rowIndex="4" />
<Label cache="true" styleClass="increased_font" text="Label With Image (Inc)" GridPane.rowIndex="5">
<graphic><Region styleClass="javasuns_logo" /></graphic>
</Label>
<Label cache="true" text="Label With Image (Def)" GridPane.rowIndex="6">
<graphic><Region styleClass="javasuns_logo" /></graphic>
</Label>
<Button styleClass="increased_font" text="Button With Image (Inc)" GridPane.rowIndex="7">
<graphic><Region styleClass="javasuns_logo" /></graphic>
</Button>
<Button text="Button With Image (Def)" GridPane.rowIndex="8">
<graphic><Region styleClass="javasuns_logo" /></graphic>
</Button>
</children>
</GridPane>
CSS: Test.css
.increased_font {
-fx-font-size: 1.3em;
}
.javasuns_logo {
-fx-font-size: null;
-fx-pref-height: 2em;
-fx-pref-width: 4em;
-fx-background-image: url('../../icons/logo/javasuns.png');
-fx-background-size: 4em;
-fx-background-repeat: no-repeat;
-fx-background-position: center;
}