JavaFX中的ListView样式

时间:2015-10-31 17:08:32

标签: listview javafx javafx-8 fxml styling

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

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

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

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

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

2 个答案:

答案 0 :(得分: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;
}
  1. 将此样式的内容保存在lisStyles.css
  2. lisStyles.css样式表的网址添加到场景中:

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

答案 1 :(得分:6)

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

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

在外部样式表中。请注意,当背景很暗时,条纹非常微妙(几乎不可见):您可能希望使用

进行调整
.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;");
然而,在外部样式表中的单元格上定义它更好(更好的代码分离,更强大)。