JavaFX组合框样式按钮是否可编辑

时间:2014-08-29 16:34:53

标签: java css combobox javafx-2 javafx-8

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

}

2 个答案:

答案 0 :(得分:1)

希望不要迟到回答你的问题...为了改变我们需要通过CSS组合框基类和他的子结构访问它的箭头颜色,直到我们到达箭头:

.combo-box-base > .arrow-button > .arrow {
    -fx-background-color: white;
}

您可以在CSS reference for Java 8

中找到它

答案 1 :(得分:0)

StyleManager不是公共API的一部分,我不知道它的作用。

使用标准机制添加样式表:

    scene.getStylesheets().add(getClass().getResource("/theme/styles/ComboBox.css").toExternalForm());

enter image description here

顶部图片正在使用StyleManager:底部图片使用scene.getStylesheets().add(...)