gpt4 book ai didi

java - 更改 TableCell 中的背景颜色会删除选择颜色,使其难以阅读

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:22 24 4
gpt4 key购买 nike

我做了这个改变:

Change TableColumn background in TableView, whilst retaining alternating row colour?

未选中看起来不错:

: unselected

但是当您选择一个单元格时:

selected

它看起来像这样,但我希望它在被选中/聚焦时正常运行。

我很确定我需要使用样式类,但是,我不知道您需要什么属性来保留具有不同颜色背景的 TableCell 的所有其他功能。另外,我是在单元格级别还是在列级别应用样式类?

更新

我的 CSS 文件:自定义.css

.customhighlight .table-cell {
-fx-background-color: rgba(0, 128, 0, 0.3);
}

.customhighlight .table-cell:selected {
-fx-background-color: inherit;
}

如何将其应用于一列?

我试过了

table.getStyleClass().add("customhighlight");

然而,它改变了整个表格。

我试过了

tableCol.getStyleClass().add("customhighlight");

它什么也没做。

我也在细胞层面上试过了...

最佳答案

如果我没理解错的话,你想要:

  • 一列的所有单元格都具有半透明背景。
  • 这些单元格在被选中时应该看起来像默认的 modena.css 选中的外观。
    • 换句话说,将半透明背景替换为深蓝色,文本变为白色。

您应该将样式类添加到相应的单元格中,然后您可以在 CSS 文件中使用这些样式类。这是一个小例子:

主.java

import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.toCollection;

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.scene.Scene;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Stage;
import javafx.util.Pair;

public class Main extends Application {

@Override
public void start(Stage primaryStage) {
var table = System.getProperties().stringPropertyNames().stream()
.map(name -> new Pair<>(name, System.getProperty(name)))
.collect(collectingAndThen(toCollection(FXCollections::observableArrayList), TableView::new));
table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
table.getSelectionModel().setCellSelectionEnabled(true); // Not sure if you're using cell or row selection

var keyCol = new TableColumn<Pair<String, String>, String>("Key");
keyCol.setCellValueFactory(new PropertyValueFactory<>("key"));
table.getColumns().add(keyCol);

var valCol = new TableColumn<Pair<String, String>, String>("Value");
valCol.setCellValueFactory(new PropertyValueFactory<>("value"));
valCol.setCellFactory(tc -> new TableCell<>() {
{ getStyleClass().add("highlighted-table-cell"); }
@Override protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null) {
setText(null);
} else {
setText(item);
}
}
});
table.getColumns().add(valCol);

var scene = new Scene(table, 600, 400);
scene.getStylesheets().add("Main.css");
primaryStage.setScene(scene);
primaryStage.show();
}

}

主.css

.highlighted-table-cell {
-fx-background-color: rgba(0, 128, 0, 0.3);
}

/* Needed by cell selection mode */
.highlighted-table-cell:selected {
-fx-background-color: inherit;
}

/* Needed by row selection mode */
.table-row-cell:selected > .highlighted-table-cell {
-fx-background-color: inherit;
}

关于java - 更改 TableCell 中的背景颜色会删除选择颜色,使其难以阅读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55581362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com