📜  tableview javafx mysql 重复数据 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:20:27.562000             🧑  作者: Mango

问题概述

在使用 JavaFX 中的 TableView 展示 MySQL 数据库中的数据时,会遇到重复数据的问题。

问题分析

在 TableView 中展示 MySQL 数据库数据时,可能会重复显示相同的数据。这是由于数据源中存在重复数据,或者 TableView 中存在相同的行的原因。

解决方法

1. 数据库去重查询

在查询数据时,可以使用 DISTINCT 关键字去重:

SELECT DISTINCT column1, column2, ... FROM table_name;
2. 使用 Set 去重

将查询的数据存储到一个 Set 集合中,即可去重:

ResultSet rs = statement.executeQuery(sql);
Set<String> set = new HashSet<>();
while (rs.next()) {
    set.add(rs.getString("column_name"));
}
3. 使用 JavaFX 内置去重

TableView 中有内置的去重方法,可以通过以下方式使用:

table.setRowFactory(tv -> new TableRow<>() {
    @Override
    protected void updateItem(String item, boolean empty) {
        super.updateItem(item, empty);
        if (!empty) {
            ObservableList<TableRow<T>> rows = tv.getItems();
            if (rows.indexOf(this) != rows.lastIndexOf(this)) {
                this.setStyle("-fx-background-color: lightgray");
            }
        }
    }
});

以上代码将相同的行标记为灰色。

结论

通过以上解决方法,我们可以解决 TableView 中显示重复数据的问题。在实际开发中应根据具体情况选择最适合的解决方法。