JavaFX 8 - 如何通过CSS更改NOT可编辑组合框的提示文本的颜色?

时间:2014-12-11 10:03:37

标签: css combobox stylesheet javafx-8 text-styling

标题说明了一切。我想更改不可编辑combobox的提示文字的颜色,以便文字与可编辑combobox的提示文字具有相同的颜色。 在我的CSS文件中,我尝试在-fx-prompt-text-fill.combo-box.combo-box-base.combo-box-base .text-field中使用.combo-box-base .text-input,但没有任何效果。

我必须使用哪种款式?

2 个答案:

答案 0 :(得分:7)

如果ComboBox不可编辑,则没有TextField,并且属性-fx-prompt-text-fill不再有效,因为显示的控件是ListCell,不要TextInputControl

为了设置此单元格的样式,我们可以提供自定义样式ListCell

@Override
public void start(Stage primaryStage) {
    ComboBox comboBox = new ComboBox();
    comboBox.getItems().addAll("Item 1", "Item 2", "Item 3");
    comboBox.setPromptText("Click to select");
    comboBox.setEditable(false);

    comboBox.setButtonCell(new ListCell(){

        @Override
        protected void updateItem(Object item, boolean empty) {
            super.updateItem(item, empty); 
            if(empty || item==null){
                // styled like -fx-prompt-text-fill:
                setStyle("-fx-text-fill: derive(-fx-control-inner-background,-30%)");
            } else {
                setStyle("-fx-text-fill: -fx-text-inner-color");
                setText(item.toString());
            }
        }

    });

    Scene scene = new Scene(new StackPane(comboBox), 300, 250);
    primaryStage.setScene(scene);
    primaryStage.show();
}

答案 1 :(得分:1)

嗨我相信我提供了更好的解决方案

第一

在CSS文件中

创建以下

.input .text-field {
         -fx-prompt-text-fill: #a0a0a0; // or any color you want
}

比在场景构建器中设置你的组合框类在附加CSS文件后输入

这对我来说就像一个骗局