Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 如何根据tableview中可能更改的数据更改行颜色?_Css_Javafx 2_Tableview_Background Color - Fatal编程技术网

Css 如何根据tableview中可能更改的数据更改行颜色?

Css 如何根据tableview中可能更改的数据更改行颜色?,css,javafx-2,tableview,background-color,Css,Javafx 2,Tableview,Background Color,我正在写一个播客播放器,并且有一个我显示的文件列表 用户可以双击一个条目并播放该文件。如果他们选择另一个。我不知道列表中选择了什么。这样做的目的是突出显示以不同颜色播放的文件。仍然保留选择另一个文件的功能(不希望丢失该功能)。大多数音频播放器的工作原理相同 我看了一下,这会根据数据改变行的颜色。但是,如果数据更改,行颜色不会随着数据更改而刷新 我有一个带有单元格工厂的表格,并根据变量“isSelectedFile”设置单元格样式 如果加载时isSelectedFile=True,则一切正常,但一

我正在写一个播客播放器,并且有一个我显示的文件列表

用户可以双击一个条目并播放该文件。如果他们选择另一个。我不知道列表中选择了什么。这样做的目的是突出显示以不同颜色播放的文件。仍然保留选择另一个文件的功能(不希望丢失该功能)。大多数音频播放器的工作原理相同

我看了一下,这会根据数据改变行的颜色。但是,如果数据更改,行颜色不会随着数据更改而刷新

我有一个带有单元格工厂的表格,并根据变量“isSelectedFile”设置单元格样式

如果加载时isSelectedFile=True,则一切正常,但一旦我在将行加载到tableview时更改了数据,它就不会刷新

我的手机工厂如下:

entryDisplayNameColumn.setCellFactory(new Callback<TableColumn<PlaylistEntry, String>, TableCell<PlaylistEntry, String>>() {
            @Override
            public TableCell call(TableColumn p) {

                TableCell cell = new TableCell<Task, Object>() {
                    @Override
                    public void updateItem(Object item, boolean empty) {
                        super.updateItem(item, empty);
                        setText(empty ? null : getString());
                        setGraphic(null);
                        TableRow currentRow = getTableRow();
                        PlaylistEntry ple = currentRow == null ? null : (PlaylistEntry) currentRow.getItem();

                        if (ple != null) {
                            clearPriorityStyle();
                            setPriorityStyle(ple.isSelectedFile());
                        }
                    }

                    @Override
                    public void updateSelected(boolean upd) {
                        super.updateSelected(upd);
                        System.out.println("is update");
                    }

                    private void clearPriorityStyle() {
                        ObservableList<String> styleClasses = getStyleClass();
                        styleClasses.remove("priorityLow");
                        styleClasses.remove("priorityMedium");
                        styleClasses.remove("priorityHigh");
                    }

                    private void setPriorityStyle(boolean activeValue) {
                        if (activeValue) {
                            getStyleClass().add("priorityLow");
                        } else {
                            getStyleClass().add("priorityMedium");
                        }
                    }

                    private String getString() {
                        return getItem() == null ? "" : getItem().toString();
                    }
                };
                return cell;
            }
        });

试试这个,它工作得很好

tablecol.setCellFactory(new Callback<TableColumn<CheckDo, String>, TableCell<CheckDo, String>>() {

        @Override
        public TableCell<CheckDo, String> call(TableColumn<CheckDo, String> p) {


             return new TableCell<CheckDo, String>() {

            @Override
            public void updateItem(String item, boolean empty) {
                super.updateItem(item, empty);
                if (!isEmpty())
                    this.setStyle("-fx-background-color:red");
                    this.getTableRow().setStyle("-fx-background-color:red");
                        setText(item);
                }
            }
        };
tablecl.setCellFactory(新回调(){
@凌驾
公共TableCell调用(TableP列){
返回新的TableCell(){
@凌驾
public void updateItem(字符串项,布尔值为空){
super.updateItem(项,空);
如果(!isEmpty())
此.setStyle(“-fx背景色:红色”);
this.getTableRow().setStyle(“-fx背景色:红色”);
setText(项目);
}
}
};
查看这一点和要点评论中链接的相关问题是否有助于创建解决方案。
tablecol.setCellFactory(new Callback<TableColumn<CheckDo, String>, TableCell<CheckDo, String>>() {

        @Override
        public TableCell<CheckDo, String> call(TableColumn<CheckDo, String> p) {


             return new TableCell<CheckDo, String>() {

            @Override
            public void updateItem(String item, boolean empty) {
                super.updateItem(item, empty);
                if (!isEmpty())
                    this.setStyle("-fx-background-color:red");
                    this.getTableRow().setStyle("-fx-background-color:red");
                        setText(item);
                }
            }
        };