Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX8-如何通过CSS更改不可编辑组合框的提示文本的颜色?_Css_Combobox_Stylesheet_Javafx 8_Text Styling - Fatal编程技术网

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

JavaFX8-如何通过CSS更改不可编辑组合框的提示文本的颜色?,css,combobox,stylesheet,javafx-8,text-styling,Css,Combobox,Stylesheet,Javafx 8,Text Styling,标题说明了一切。我想更改不可编辑的组合框的提示文本的颜色,以便该文本具有与可编辑的组合框的提示文本相同的颜色。 在我的CSS文件中,我尝试在组合框,组合框底,组合框底,组合框底。文本字段和组合框底。文本输入,但没有任何效果 我必须使用什么样式类?当组合框不可编辑时,没有TextField,并且属性-fx prompt text fill不再有效,因为显示的控件是列表单元格,不会扩展TextInputControl 为了设置此单元格的样式,我们可以提供自定义样式的ListCell: @Overri

标题说明了一切。我想更改不可编辑的组合框的提示文本的颜色,以便该文本具有与可编辑的组合框的提示文本相同的颜色。 在我的CSS文件中,我尝试在
组合框
组合框底
组合框底
组合框底。文本字段
组合框底。文本输入
,但没有任何效果


我必须使用什么样式类?

当组合框不可编辑时,没有
TextField
,并且属性
-fx prompt text fill
不再有效,因为显示的控件是
列表单元格
,不会扩展
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();
}

当组合框
不可编辑时,没有
文本字段
,并且属性
-fx prompt text fill
不再有效,因为显示的控件是
列表单元格
,不会扩展
文本输入控件

为了设置此单元格的样式,我们可以提供自定义样式的
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();
}

嗨,我相信我正在提供一个更好的解决方案

首先

在CSS文件中创建以下内容

.input .text-field {
         -fx-prompt-text-fill: #a0a0a0; // or any color you want
}
而不是在场景生成器中,在附加CSS文件后将combobox类设置为input


这对我来说就像一个沙姆一样

嗨,我相信我正在提供一个更好的解决方案

首先

在CSS文件中创建以下内容

.input .text-field {
         -fx-prompt-text-fill: #a0a0a0; // or any color you want
}
而不是在场景生成器中,在附加CSS文件后将combobox类设置为input

这对我来说就像一个沙姆