JavaFX 中的 ListView 样式

ListView styling in JavaFX

我有一个列表视图。我想更改背景颜色和文本填充。我已尝试执行以下操作:

playlistView.setStyle("-fx-background-color: blue; -fx-text-fill: black;");

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

playlistView.setStyle("-fx-font-size: 24px; -fx-font-family: 'SketchFlow Print';");

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

您可以使用以下 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;
}
  1. 将此样式的内容保存在lisStyles.css.
  2. lisStyles.css 样式 sheet 的 URL 添加到场景中:

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

您正在设置 ListView 的样式,但背景颜色由列表单元格的样式决定。所以样式单元格。如果您更改查找颜色 -fx-control-inner-background 的值,您将保留交替行的 "striping" 和更改的文本颜色,以便它与背景形成对比。使用

.list-cell {
    -fx-control-inner-background: blue ;
}

外部样式 sheet。请注意,当背景如此黑暗时,条纹非常微妙(几乎看不见):您可能需要使用

进行调整
.list-cell {
    -fx-control-inner-background: blue ;
    -fx-control-inner-background-alt: derive(-fx-control-inner-background, 50%);
}

作为快速技巧,您可以直接在列表视图上设置查找到的颜色,它会传播到它包含的单元格:

playlistView.setStyle("-fx-control-inner-background: blue;");

但是,最好(更好地分离代码,并且更健壮)以外部样式在单元格上定义它 sheet。