JavaFX8-如何通过CSS更改不可编辑组合框的提示文本的颜色?
标题说明了一切。我想更改不可编辑的组合框的提示文本的颜色,以便该文本具有与可编辑的组合框的提示文本相同的颜色。 在我的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
组合框
,组合框底
,组合框底
,组合框底。文本字段
和组合框底。文本输入
,但没有任何效果
我必须使用什么样式类?当组合框不可编辑时,没有
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
这对我来说就像一个沙姆