添加数据后刷新表

时间:2017-11-18 14:07:56

标签: java mysql database javafx

我正在建立一个足球联赛管理系统,我使用javaFx构建了用户界面,我创建了这个类来使用数据库填充表。

public class TableHandler {

    public static ObservableList<Team> getTeams() {
        ObservableList<Team> list = FXCollections.observableArrayList();
        DBConnection db;
        try {
            db = new DBConnection();
            String sql = "Select * from teams";
            ResultSet result = db.read(sql);
            while (result.next()) {
                list.add(new Team(result.getInt(1), result.getString(2), result.getString(3), result.getInt(4),
                        result.getDouble(5)));
            }
        } catch (Exception e) {
            e.getMessage();
        }
        return list;
    }

    public static TableView<Team> getTable(ObservableList<Team> list) {
        TableView<Team> table;
        TableColumn<Team, String> idColumn = new TableColumn<>("ID");
        idColumn.setCellValueFactory(new PropertyValueFactory<>("id"));

        TableColumn<Team, String> nameColumn = new TableColumn<>("Name");
        nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));

        TableColumn<Team, String> phoneNumberColumn = new TableColumn<>("phoneNumber");
        phoneNumberColumn.setCellValueFactory(new PropertyValueFactory<>("phoneNumber"));

        TableColumn<Team, Integer> pointsColumn = new TableColumn<>("Points");
        pointsColumn.setCellValueFactory(new PropertyValueFactory<>("points"));

        TableColumn<Team, Double> budgetColumn = new TableColumn<>("Budget");
        budgetColumn.setCellValueFactory(new PropertyValueFactory<>("budget"));

        table = new TableView<>();
        table.setItems(list);
        table.getColumns().addAll(idColumn, nameColumn, phoneNumberColumn, pointsColumn, budgetColumn);
        return table;

    }

我创建了一个按钮,用户可以将团队添加到表中,当用户点击添加按钮时,我无法想象的是如何刷新表格,任何帮助都会得到满足。

1 个答案:

答案 0 :(得分:2)

你不必。可观察列表的概念是TableView观察其中的变化并相应地改变值。

您必须确保的是,您要将元素添加到实际绑定到TableView的集合而不是其他任何元素。您没有发布添加项目的代码,因此很难说,但如果您使用getTeams()然后再添加,那就错了(因为它是一个新的ObservableList而不是与TableView绑定的那个。您应始终使用table.getItems().add(...)将项目添加到TableView