JavaFX:如何使选定的单元格更加可见

来源:爱站网时间:2021-09-16编辑:网友分享
我正在开发一个显示数据的程序。用户可以添加带有按钮的行。为了使新行更加可见,我将其涂成绿色。对于(TableColumn列:tableView.getVisibleLeafColumns()){...

问题描述


我正在开发一个显示数据的程序。用户可以添加带有按钮的行。为了使新行更加可见,我将其涂成绿色。

for (TableColumn column : tableView.getVisibleLeafColumns()) {
    column.setCellFactory(factory -> new TableCell, CtrCellData>() {

        @Override
        protected void updateItem(CtrCellData item, boolean empty) {
            super.updateItem(item, empty);

            if (item == null) { // || empty) {
                setStyle("");
            } else {
                setText(item.toString());
                if (item.isUnsaved() && !item.isDeleted() && !item.isAfterDelete() && item.isValid()) {
                    setStyle("-fx-background-color: " + CtrCellData.FARBE_GRUEN + "; -fx-text-fill: " + CtrCellData.FARBE_SCHWARZ + ";");
                }
                if (item.isAfterDelete()) {
                    setStyle("-fx-background-color: " + CtrCellData.FARBE_GRAU + "; -fx-text-fill: " + CtrCellData.FARBE_SCHWARZ + ";");
                }
                if (item.isDeleted()) {
                    setStyle("-fx-background-color: " + CtrCellData.FARBE_GELB + "; -fx-text-fill: " + CtrCellData.FARBE_SCHWARZ + ";");
                }
                if (!item.isValid()) {
                    setStyle("-fx-background-color: " + CtrCellData.FARBE_ROSA + "; -fx-text-fill: " + CtrCellData.FARBE_SCHWARZ + ";");
                }

                if (!(item.isUnsaved() || item.isDeleted() || item.isAfterDelete() || !item.isValid())) {
                    setStyle("");
                }
            }
        }
    });
}

问题现在的问题是,当我选择新添加的行的单元格时,该选择不可见。

我尝试使用较浅的颜色,但这也不起作用。我也没有找到互联网上的解决方案/方法。因此,我希望你们中的一个能帮助我。

思路:


不知道这是否可以解决您的问题,但我的第一个猜测是实现选择侦听器并手动为选定的单元着色。这样,您就可以区分“旧”单元格(标准蓝色或其他颜色)和“新”单元格(新单元格选择颜色)。

table.getSelectionModel().selectedIndexProperty().addListener((observable, oldValue, newValue) -> {
        Platform.runLater(() -> {
            // coloring goes here
        });
    });

上一篇:如何获得JUNG中的边缘标签和值?

下一篇:映射实体,列表为地图值。通过JDBC语句执行DDL“如果存在`single_line`,则丢弃表”时出错

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载