我有一个ComboBox
,我可以通过 css 设置它的样式。但是,不能从同一个 css 文件中设置combo-box-popup
组件的样式。ComboBox
我的理论是,弹出窗口ComboBox
不是当前场景的一部分(因为它是一个新窗口),并且由于 css 文件被添加到包含的样式表列表中AnchorPane
,我需要以某种方式添加这个 css文件添加到弹出窗口的样式表列表中。
几个月前,我在设计Tooltip
.
如何设置combo-box-popup
组件样式?
> 如何设置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());