リストビューで選択バーのテキストの色を変更する方法はありますか?できればCSSを使用してください。TableViewでは、次を使用できます。
-fx-selection-bar-text: white;
ただし、これはListViewでは機能しません。
更新:上記のケースは、CellFactoriesを使用してセルをレンダリングするときに発生します。
lvRooms.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {
@Override public ListCell<String> call(ListView<String> list) {
return new RoomCell();
}
});
Cell Factoryクラスでは、行が選択されたときに喜んでケースをカバーします。
ただし、選択バーが移動されるたびではなく、最初に1回だけ呼び出されるため、isSelected()メソッドは常にfalseになります。
更新2:これはRoomCellの実装です:
class RoomCell extends ListCell<String> {
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (item != null) {
Log.debug("RoomCell called, item: "+item);
final Label lbl = new Label(item); // The room name will be displayed here
lbl.setFont(Font.font("Segoe UI", FontWeight.BOLD, 18));
lbl.setStyle("-fx-text-fill: black");
//lbl.setTextFill(isSelected()?Color.WHITE: Color.BLACK);
if (isSelected()) // This is always false :(
lbl.setStyle("-fx-text-fill: yellow");
if (Rooms.getBoolean(item, "OwnerStatus")) {
lbl.setEffect(new DropShadow(15, Color.BLUEVIOLET));
lbl.setGraphic(new ImageView(
new Image(getClass().getResourceAsStream("images/universal.png"))));
} else {
lbl.setGraphic(new ImageView(
new Image(getClass().getResourceAsStream("images/yin-yang.png"))));
lbl.setEffect(new DropShadow(15, Color.WHITE));
}
setGraphic(lbl);
}
}
}