我在javafx中使用组合框按钮设置样式时遇到了奇怪的情况。目前,我有
.combo-box .arrow {
-fx-background-color: black;
}
.combo-box .arrow-button {
-fx-background-color: white;
-fx-size: 5;
}
将按钮的背景颜色设置为白色,将箭头设置为黑色。如果组合框不可编辑,这很好。但是,如果我对组合框进行了编辑,则不会应用此CSS。
如果组合框可编辑,有没有人知道如何设置下拉按钮的样式?
public class SSCCE extends Application{
@Override
public void start(Stage primaryStage) throws Exception {
VBox root = new VBox();
primaryStage.setScene(new Scene(root));
ComboBox editable = new ComboBox();
editable.setEditable(true);
editable.setPrefWidth(125);
ComboBox notEditable = new ComboBox();
notEditable.setEditable(false);
notEditable.setPrefWidth(125);
root.getChildren().addAll(editable, notEditable);
primaryStage.sizeToScene();
primaryStage.show();
StyleManager.getInstance().addUserAgentStylesheet("/theme/styles/ComboBox.css");
}
public static void main(String[] args) {
launch(args);
}
}
答案 0 :(得分:1)
希望不要迟到回答你的问题...为了改变我们需要通过CSS组合框基类和他的子结构访问它的箭头颜色,直到我们到达箭头:
.combo-box-base > .arrow-button > .arrow {
-fx-background-color: white;
}
中找到它
答案 1 :(得分:0)
StyleManager
不是公共API的一部分,我不知道它的作用。
使用标准机制添加样式表:
scene.getStylesheets().add(getClass().getResource("/theme/styles/ComboBox.css").toExternalForm());
顶部图片正在使用StyleManager
:底部图片使用scene.getStylesheets().add(...)