我读了这个问题,并从答案中得到了这个代码:
.list-cell:filled:selected:focused, .list-cell:filled:selected {
/* 3:, 4: */
-fx-background-color: linear-gradient(#333 0%, #777 25%, #aaa 75%, #eee 100%);
-fx-text-fill: white; /* 5 */
}
.list-cell { -fx-text-fill: black; /* 5 */ }
.list-cell:odd { -fx-background-color: white; /* 1 */ }
.list-cell:even { -fx-background-color: #8f8; /* for information */ }
.list-cell:filled:hover {
-fx-background-color: #00f; /* 2 */
-fx-text-fill: white; /* 5 */
}
我会用黑色文本填充(文本颜色)选择的项目。因此我参加了这些课程.list-cell:filled:selected:focused, .list-cell:filled:selected
并将属性-fx-text-fill
从white
更改为black
,但什么也没发生,但如果我将背景颜色更改为红色,则背景颜色已经更改(这不适用于文本颜色,这只是对正确类的检查)
如何更改焦点ListView中所选项目的文本颜色?
UPD1:
我试图更改列表单元格的文本颜色,只是在这个变体中:
.list-cell{
-fx-text-fill: magenta;
}
以及这个变体:
.list-view:focused > .virtual-flow > .clipped-container > .sheet > .list-cell:filled{
-fx-text-fill: magenta;
}
但是什么都不起作用
我尝试了以下代码,它在Java8上运行得很好。它会更改所选单元格的文本颜色。
ListViewSample.java
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;
public class ListViewSample extends Application {
ListView<String> list = new ListView<String>();
ObservableList<String> data = FXCollections.observableArrayList(
"chocolate", "salmon", "gold", "coral", "darkorchid",
"darkgoldenrod", "lightsalmon", "black", "rosybrown", "blue",
"blueviolet", "brown");
final Label label = new Label();
@Override
public void start(Stage stage) {
VBox box = new VBox();
Scene scene = new Scene(box, 200, 200);
scene.getStylesheets().add(this.getClass().getResource("list.css").toExternalForm());
stage.setScene(scene);
stage.setTitle("ListViewSample");
box.getChildren().addAll(list, label);
VBox.setVgrow(list, Priority.ALWAYS);
label.setLayoutX(10);
label.setLayoutY(115);
label.setFont(Font.font("Verdana", 20));
list.setItems(data);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
list.css
.list-cell:filled:selected {
-fx-text-fill: red;
}
这也起作用:
.list-cell:filled:selected:focused, .list-cell:filled:selected {
-fx-background-color: linear-gradient(#328BDB 0%, #207BCF 25%, #1973C9 75%, #0A65BF 100%);
-fx-text-fill: red;
}