css - 如何在 JavaFx 的组合/选择框中为特定元素添加自定义 css 样式?

标签 css javafx custom-controls

Screen Capture

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

最佳答案

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

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);
            }
        }
    }
});

测试看是否需要添加style class可以明显引用item

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

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

关于css - 如何在 JavaFx 的组合/选择框中为特定元素添加自定义 css 样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36777674/

相关文章:

java - 使用 JavaFX 8 创建 null-safe BooleanBinding

javafx - 在 Jar 中为 Gluon Scene Builder 11.00 创建自定义控件

wpf - 在 WPF : Set ValidatesOnDataErrors = true programmatically

javascript - jquery replaceWith 删除内容

css - 具有线性渐变的边框阴影与具有线性渐变的背景图像的组合?

java - 自动调整 Canvas 大小以填充封闭的父级

JavaFX - 在自定义节点上设置focusedProperty Listener

html - 为什么 IE 不显示这个请求的背景图片?

css - 如何使用站点特定的 CSS 将导航栏和 Logo 居中

JavaFX GridPane 正在调整大小,而不是使用新数量的约束保持位置