JavaFX:节点重新大小未按预期工作

时间:2016-04-02 10:40:32

标签: css checkbox javafx font-size em

我已经定义了一个带有8行GridPane的FXML,它包含以下组件(在该线程的末尾给出了FXML和CSS定义):

  • 2 CheckBoxes,
  • 2标签,
  • 带有区域和
  • 的2个标签
  • 带有A区域的2个按钮

此处的区域用于加载图像,这是通过CSS样式完成的。对于上面定义的每个组件集(例如2个复选框),我选择了一个,并通过使用 -fx-font-size 样式增加了它的大小。特别是,我将字体大小定义为 " 1.3xDefault_System_Font_Size(12)" 。每个组件的文本中的标签(INC)(DEF)用于描述字体大小是增加还是保留为默认值。

enter image description here

从上面的屏幕截图中可以看出,复选框的标签已增加,但框本身却没有。这同样适用于图像,它们的尺寸没有增加,但标签大小确实如此。

当我更改.root中的默认字体大小时,这会变得更糟:

.root{
    -fx-font-size: 28;
}

在上面的示例中,由于我将默认字体大小从12更改为28,因此我希望所有标签和图像都根据此新大小更改其大小。图像大小由 -fx-background-size 定义, 4em

但是,所有标签都正确增加,但图像仅在具有 DEF 标记的节点上正确增加。这同样适用于复选框,其中 DEF 上的标签和框增加,而仅 INC 标签的标签尺寸正确增加且盒子还小。

enter image description here

有没有办法制作图片和复选框来正确增加尺寸?这是一个错误,还是我做错了什么?

FXML:Gridpane

<?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;
}

1 个答案:

答案 0 :(得分:0)

我知道这是一个古老的问题,但我现在也在努力解决这个问题。我发现当你使用pref-height和pref-width时,你不能在同一个类中使用-fx-font-size导致它&#34;重置&#34; .root -fx-font-size为默认值12.

我想在某些按钮中设置特定的字体大小,以及使用em值设置宽度和高度。这是不可能的,所以我在Button元素中创建了一个Label,在这里我可以正确调整标签字体大小。因此,如果我不在相同的类/同一控件中使用font-size和pref-width / height,它看起来就像是在工作。