当前位置: 首页 > 知识库问答 >
问题:

JavaFX在表格列单元格中设置颜色或图标,如果

董光霁
2023-03-14

我对java编程还是相当陌生的,很难理解一些概念,尤其是设置TableColumn单元格值。(如果有人能用外行的话来解释这一点,那就太棒了!)

这是我的问题。。。

我有一个tableview,其中加载了一个来自derby数据库中数据表的ObservableList。将数据添加到表中的for循环是我从在线查看中学到的,它对我来说确实有效。我想更进一步,所以这是我的挑战。。。

observablelist将有如下示例:第1行[toy,high等]第2行[box,Middle等]。。现在,我想让代码看看这个列表,看看是否在那一行中——得到第一个值,如果它等于高、中或低,然后在状态列中添加一个颜色图标,我将分配(或颜色填充,如果图标工作量太大)示例。这是我的代码,如果颜色图标也在for循环中,这可能是有意义的。我试图实现的整个功能与excel中的条件格式相同。

data = FXCollections.observableArrayList();

while (rs.next()) {

    ObservableList<String> row = FXCollections.observableArrayList();

    for(int i=1 ; i<=rs.getMetaData().getColumnCount(); i++) {
        row.add(rs.getString(i));              
    }

    data.add(row);
    data.add(row);

    if (data.get(2).equals("High")) { 
        //***set cell icon red or color fill red with padding around***   
    }             
}

mtable.setItems(data);

感谢您的帮助!非常感谢。

共有1个答案

阴礼骞
2023-03-14

对于TableColumn值的设置,我不会解释,因为之前已经回答过了,而且您也没有问过这个问题。在javafx的TableView中,你可以通过一些快速的谷歌搜索找到更多关于如何设置单元格值的信息。我搜索了“javafx set tablecolumn value”

您应该有一个适当的数据模型Class,该模型对您从数据库中获取的数据集具有适当的方法。我不知道你的数据库里有什么,所以我只是使用你在图片中发布的内容,即项目名称优先级状态

您当然可以将Circle添加到您的TableView中,但是它应该在您的数据模型Class中适当声明。

有些东西你也需要,但我没有提供:

  • 您需要解析数据库返回并调用适当的数据构造函数。我会把这留给你。

好了,现在谈谈我提供了什么,以及我为实现它做了什么。

您需要使用数据模型来存储数据库返回,这就是为什么正确设置它很重要。因此,对于您从报税表中关心的每个数据点,它应该有一个适当的setget方法。

在返回数据的循环中,需要创建一个新的数据模型(x,y,z,…)并将其添加到可观察列表中

以下是您提供的图片上的示例

主要的JAVA

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        TableView<Data> dataTable = new TableView<>();
        TableColumn<Data, String> itemName = new TableColumn<>("Item Name");
        itemName.setCellValueFactory(cell -> new SimpleStringProperty(cell.getValue().getName()));
        TableColumn<Data, String> priority = new TableColumn<>("Priority");
        priority.setCellValueFactory(cell -> new SimpleStringProperty(cell.getValue().getPriority()));
        TableColumn<Data, Circle> status = new TableColumn<>("Status");
        status.setCellValueFactory(cell -> new SimpleObjectProperty<>(cell.getValue().getStatus()));

        dataTable.getColumns().addAll(itemName, priority, status);
        ObservableList<Data> data = FXCollections.observableArrayList();

        Data high = new Data("toy", "high");
        Data medium = new Data("box", "medium");
        Data low = new Data("candy", "low");
        data.addAll(high, medium, low);

        dataTable.setItems(data);
        Scene scene = new Scene(dataTable, 500, 500);

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

数据java(这是我的数据模型)

public class Data {
    private String name;
    private String priority;
    private Circle status;

    public Data (String name, String priority){
        setName(name);
        setPriority(priority);
        setStatus(priority);
    }

    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }

    public String getPriority(){
        return priority;
    }
    public void setPriority(String priority){
        this.priority = priority;
    }

    public Circle getStatus(){
        return status;
    }
    public void setStatus(String priority){
        Circle c = new Circle(5);
        switch(priority){
            case "high":
                c.setFill(Color.GREEN);
                break;
            case "medium":
                c.setFill(Color.YELLOW);
                break;
            case "low":
                c.setFill(Color.RED);
                break;
            default:
        }
        status = c;
    }
}

如您所见,我没有在构造函数中提供状态,而是使用优先级来确定它。

希望这有帮助。

 类似资料:
  • 问题内容: 我正在使用Vaadin,我想为我的表格/表格中的特定单元格设置背景色,或者如果无法为特定表格中的单元格设置背景色,我想至少为表格/表格中的特定单元格设置字体颜色。我有一个表格/表格的代码TableView如下: 表格/表格的内容类为: 如果可以将背景颜色设置为特定的单元格,或者至少设置字体颜色,并且您知道该怎么做,请写信。例如,在表格/表格中单元格的值为“ 1”的情况下,我想将其设置为

  • 我正在使用Vaadin,我想为网格/表格中的特定单元格设置背景颜色,或者如果无法为特定单元格设置背景颜色,我想至少为网格/表格中的特定单元格设置字体颜色。我有网格/表格的代码TableView如下: 网格/表的内容类为: 如果可以为特定单元格设置背景颜色,或者至少设置字体颜色,并且你知道怎么做,请写信。例如,网格/表格中单元格的值为“1”,我想将其设为红色,但如果单元格的值为“5”,我想将其设为绿

  • 我有一个servlet,它接收一组数据,进行处理,并根据表单提交将其写入excel文件或文本页面。在处理Excel时,所有的处理都在使用Apache POI的相应模型中进行。我正在尝试修改它,以便它根据所包含的数据对行进行颜色编码,但是,在将颜色应用于行之后,当我将工作簿写入文件输出流时,颜色不存在。我正在将数据处理成excel文件,如下所示: MCVE公司 我仍然得到excel文件,但格式不存在

  • 问题内容: 我想根据第1列中的值给表格单元格上色,如果值不等于第1列中的值,则颜色应为青色,但我的代码不起作用: 问题答案: 是否必须突出显示单元格的决定必须在TableCellRenderer中进行。它不能在JTable中进行。因此,(没有)没有理由要重写JTable中的方法。相反,您可以将列的CellRenderer设置为TableCellRenderer的自己实现。 在此示例中,列2和3接收

  • 我正在 中使用 现在我遇到了表视图单元格高度的问题。我正在聊天屏幕上工作,所以我有文字,图像。所以我在管理屏幕的其中取了一个原型单元。现在下面是我的身高代码 因此,文本单元格没有得到我所期望的,但我不知道我的错误在哪里,还有一件事,如果我< code > returnuitableviewautomaticdimension ,它的工作很好的文本信息,而不是图像。请帮助我,先谢了。

  • 我需要用Java和Jsoup解析一个表,并根据它的值改变单元格的颜色。这就是html表格的外观,也是单元格颜色需要定义的方式 我写了一个脚本,可以准备好单元格的值并从中更改文本,但是我无法也更改颜色。 这是我收到的错误: