JavaFX中的ListView样式

iha*_*yet 5 listview javafx styling fxml javafx-8

我有一个listview.我想更改背景颜色和文本填充.我尝试过以下操作:

playlistView.setStyle("-fx-background-color: blue; -fx-text-fill: black;");
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用.但是,以下是有效的:

playlistView.setStyle("-fx-font-size: 24px; -fx-font-family: 'SketchFlow Print';");
Run Code Online (Sandbox Code Playgroud)

你能告诉我如何让背景和文本填充工作吗?谢谢.

Kac*_*hna 7

您可以使用以下CSS样式:

.list-view .list-cell:even {
-fx-background-color: blue;
-fx-text-fill: black;
}
.list-view .list-cell:odd {
-fx-background-color: blue;
-fx-text-fill: black;
}
Run Code Online (Sandbox Code Playgroud)
  1. 将此样式的内容保存在lisStyles.css.
  2. lisStyles.css样式表的URL添加到场景中:

    scene.getStylesheets().add(getClass().getResource("lisStyles.css").toExternalForm());


Jam*_*s_D 7

您正在设置样式ListView,但背景颜色由列表单元格上的样式确定.因此,设计细胞样式.如果更改查找颜色的值,-fx-control-inner-background则将保留备用行的"条带化"和更改的文本颜色,以便与背景形成对比.使用

.list-cell {
    -fx-control-inner-background: blue ;
}
Run Code Online (Sandbox Code Playgroud)

在外部样式表中.请注意,当背景很暗时,条纹非常微妙(几乎不可见):您可能想要调整它

.list-cell {
    -fx-control-inner-background: blue ;
    -fx-control-inner-background-alt: derive(-fx-control-inner-background, 50%);
}
Run Code Online (Sandbox Code Playgroud)

作为快速入侵,您可以直接在列表视图中设置该查找颜色,它将传播到它包含的单元格:

playlistView.setStyle("-fx-control-inner-background: blue;");
Run Code Online (Sandbox Code Playgroud)

但是,在外部样式表中的单元格上定义它更好(更好的代码分离,更强大).