4

我正在使用 JavaFX 的JFoenix库,我想在框的左侧显示复选框标签。

从(默认):

在此处输入图像描述

至:

在此处输入图像描述

查看可用的方法,这是唯一可以读取的内容,但它没有做任何事情(我猜它只是用于其他图形):

checkBox.setContentDisplay(ContentDisplay.LEFT);
// checkBox.setContentDisplay(ContentDisplay.RIGHT);

是否有另一种方法或 css 样式来获取左侧的标签?谢谢

4

3 回答 3

4

万一有人仍然面临同样的问题,这是答案

来自java代码

checkbox.setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);

来自 fxml 文件

nodeOrientation="RIGHT_TO_LEFT"
于 2021-03-24T04:58:09.660 回答
2

您可以使用标签并将其与 jfxCheckBox 一起包装在 HBox 中,如下所示:

JFXCheckBox jfxCheckBox = new JFXCheckBox();
HBox hBox = new HBox();
Label label= new Label("CHECK BOX");
hBox.getChildren().addAll(label, jfxCheckBox);
hBox.setSpacing(10);

其他方式为:

Label lblCheckbox = new Label("CHECK BOX");
lblCheckbox.setGraphic(new JFXCheckBox());
lblCheckbox.setContentDisplay(ContentDisplay.RIGHT);
于 2017-07-29T19:19:49.267 回答
0

您必须调整或覆盖 the 的layoutChildren()方法JFXCheckBoxSkin才能将复选框放置在其标签之后。

更改layoutLabelInArea()方法的 x 位置,使标签移动/保持在左侧。这可以通过boxWidth从 中删除来实现xOffset

layoutLabelInArea(xOffset, yOffset, labelWidth, maxHeight, checkBox.getAlignment());

labelWidth同样,通过添加将复选框向右移动xOffset

positionInArea(box, xOffset+labelWidth, yOffset, boxWidth, maxHeight, 0, checkBox.getAlignment()
                .getHpos(), checkBox.getAlignment().getVpos());
于 2017-10-05T23:42:28.800 回答