使用JavaFX中的JFoenix复选框左侧的标签

时间:2017-07-29 18:44:55

标签: css user-interface javafx javafx-8 jfoenix

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

从(默认):

enter image description here

致:

enter image description here

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

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

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

3 个答案:

答案 0 :(得分:1)

您可以使用标签并将其与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);

答案 1 :(得分:1)

如果有人仍然面临同样的问题,这里是答案

来自java代码

checkbox.setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);

来自 fxml 文件

nodeOrientation="RIGHT_TO_LEFT"

答案 2 :(得分:0)

您必须调整或覆盖JFXCheckBoxSkinlayoutChildren()方法才能将复选框放在标签后面。

更改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());