javafx tableview,我可以根据一个单元格的值格式化整个行单元格吗?

问题描述 投票:0回答:1
我有一个表观视图,我根据值将单元格式格式化(请参阅代码)。我想知道是否有一种方法可以根据该单元格值或对象的值格式化整个行属于该单元格(在我的情况下step.getStatus())。这似乎很简单,但是我很难找到任何参考。

colStatus.setCellFactory(new Callback<TableColumn<Step, String>, TableCell<Step, String>>() { @Override public TableCell<Step, String> call(TableColumn<Step, String> param) { return new TableCell<Step, String>() { @Override protected void updateItem(String item, boolean empty) { if (!empty) { int currentIndex = indexProperty().getValue() < 0 ? 0 : indexProperty().getValue(); setText(param.getTableView().getItems().get(currentIndex).getStatus().name()); switch(param.getTableView().getItems().get(currentIndex).getStatus()) { case Step.STATUS.Enabled: setTextFill(Color.BLACK); break; case Step.STATUS.Disabled: setTextFill(Color.GRAY); break; case Step.STATUS.Running: setTextFill(Color.BLUEVIOLET); break; case Step.STATUS.Complete: setTextFill(Color.LIME); break; case Step.STATUS.Error: setTextFill(Color.RED); setStyle("-fx-background-color: pink;"); break; } } } }; } });

enter image description here

java javafx
1个回答
0
投票
statusProperty()

类中定义了一个方法,并且使用Javafx 19或更高版本,您可以使用表行工厂。您的问题中没有足够的细节来提供完整的防弹代码,但这并未进行测试,但是以下内容应该给您一个想法:

Step
然后使用带有

的外部样式表
table.setRowFactory( _ -> new TableRow() {
    private final List<String> statusClasses = List.of(
        "enabled",
        "disabled",
        "running",
        "complete",
        "error"
    );
    {
        itemProperty().flatMap(Step::statusProperty).subscribe(status -> {
            
            for (String s : statusClasses) {
                PsuedoClass pc = PseudoClass.getPseudoClass(cssStatusClass);
                pseudoClassStateChanged(pc, s.equals(status.toLowerCase());
            }
        });
    }
});

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.