我正在使用 JavaFX 的JFoenix库,我想在框的左侧显示复选框标签。
从(默认):
至:
查看可用的方法,这是唯一可以读取的内容,但它没有做任何事情(我猜它只是用于其他图形):
checkBox.setContentDisplay(ContentDisplay.LEFT);
// checkBox.setContentDisplay(ContentDisplay.RIGHT);
是否有另一种方法或 css 样式来获取左侧的标签?谢谢
万一有人仍然面临同样的问题,这是答案
来自java代码
checkbox.setNodeOrientation(NodeOrientation.RIGHT_TO_LEFT);
来自 fxml 文件
nodeOrientation="RIGHT_TO_LEFT"
您可以使用标签并将其与 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);
您必须调整或覆盖 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());