JavaFX:如何更改ComboBox / ChoiceBox下拉按钮位置?

时间:2015-11-05 07:52:23

标签: java css combobox javafx-8 styling

所以大家,这应该很简单,但我找不到答案。我对CSS的了解非常有限。

我想将ComboBox / ChoiceBox的“下拉按钮”或“箭头”移动到组件的左侧,而不是右侧。

如下图所示: ComBox with arrow on left side

我找到了一种让箭头透明的方法,如下所示:

.combo-box .arrow-button {
    -fx-alignment: LEFT;
}

这是我将箭头移到左侧的天真方法:

{{1}}

那么,有谁知道这是否有可能实现? 怎么样?谢谢!

2 个答案:

答案 0 :(得分:1)

ComboBox本身不支持样式属性“-fx-alignment” - 只有编辑器(textField)才支持。

您可以扩展ComboBoxBaseSkin(ComboBoxListViewSkin),覆盖#layoutChildren()并单独定位箭头按钮,或者只是更改节点方向,就像下面的示例一样。但是,更改节点方向会影响完整内容 - 意味着编辑器和弹出内容。您可以通过应用相反的(因为RTL)对齐或通过将NodeOrientation更改为LTR来修复编辑器,就像p​​opop的ListView一样。

WITH cte AS
(
    SELECT person_id, COUNT(DISTINCT student_id) AS r
    FROM #PERSON
    GROUP BY person_id
)
SELECT student_id, CASE WHEN r = 1 THEN 0 ELSE 1 END
FROM #PERSON p
JOIN cte c
  ON p.person_id = c.person_id
-- ORDER BY student_id

答案 1 :(得分:0)

您必须设置NodeOrientation。问题是,NodeOrientation的StyleableProperty尚不支持,所以你不能用css设置它。

检查javafx.scene.Node中的第6136行 - >节点#nodeOrientationProperty

在代码或FXML中设置方向