如何在JavaFx的组合/选择框中为特定项添加自定义CSS样式?

时间:2016-04-21 18:27:49

标签: css javafx custom-controls

Screen Capture

我正在使用javaFx,我想模仿这个控件。特别是菜单底部的链接!!
是否可以仅使用css或不创建自定义控件?

1 个答案:

答案 0 :(得分:1)

无需实现自定义控件,但您需要一个单元工厂来执行此操作。基本思想是在需要时为单元格添加样式类,如果不需要则将其删除。所以你可以这样做,例如:

final String cellStyleClass = "my-combo-box-cell" ;

ComboBox<String> combo = new ComboBox<>();
combo.setCellFactory(listView -> new ListCell<String>() {
    @Override
    protected void updateItem(String item, boolean empty) {
        super.updateItem(item, empty) ;
        getStyleClass().remove(cellStyleClass);
        if (empty) {
            setText(null);
        } else {
            setText(item);
            if (/* needs style class */) {
                getStyleClass().add(cellStyleClass);
            }
        }
    }
});

查看是否需要添加样式类的测试显然可以引用item等。

现在,在CSS文件中,您可以根据需要设置单元格的样式:

.my-combo-box-cell {
    /* specific styles here... */
}