1

我有一个ComboBox,我可以通过 css 设置它的样式。但是,不能从同一个 css 文件中设置combo-box-popup组件的样式。ComboBox

我的理论是,弹出窗口ComboBox不是当前场景的一部分(因为它是一个新窗口),并且由于 css 文件被添加到包含的样式表列表中AnchorPane,我需要以某种方式添加这个 css文件添加到弹出窗口的样式表列表中。

几个月前,我在设计Tooltip.

如何设置combo-box-popup组件样式?

4

1 回答 1

4

> 如何设置combo-box-popup组件样式?

这取决于您要设置弹出窗口的哪些属性。由于它也有自己的子节点,因此您需要设置它们的样式:

 - combo-box-popup : a PopupControl that is displayed when the button is pressed  
     - list-view : a ListView  
         - list-cell : a ListCell

caspian.css 使用以下默认值:

.combo-box-popup .list-view {
    -fx-background-color: -fx-box-border, -fx-control-inner-background;
    -fx-background-insets: 0, 1;
    -fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 8, 0.0 , 0 , 0 );
}

.combo-box-popup .list-view .list-cell {
    -fx-padding: 4 0 4 5;

    /* No alternate highlighting */
    -fx-background-color: -fx-control-inner-background;
}

.combo-box-popup .list-view .list-cell:filled:selected, .combo-box-popup .list-view .list-cell:filled:selected:hover {
    -fx-background: -fx-accent;
    -fx-background-color: -fx-selection-bar;
    -fx-text-fill: -fx-selection-bar-text;
}

.combo-box-popup .list-view .list-cell:filled:hover {
    -fx-background-color: -fx-cell-hover-color;
    -fx-text-fill: -fx-text-inner-color;
}

> 我的理论是,ComboBox 的弹出窗口不是当前场景的一部分(因为它是一个新窗口),并且由于 css 文件被添加到包含的样式表列表中AnchorPane

不,这是场景的一部分。PopupControl 不能在没有所有者的情况下显示,但是.combo-box-popup当 css 样式表添加到布局而不是场景时,您是正确的。我认为这是一个错误,您可以提交它。目前的解决方法是直接添加到场景中:

scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm());
于 2013-07-10T08:42:14.850 回答