Java 添加数据后刷新表

Java 添加数据后刷新表,java,mysql,database,javafx,Java,Mysql,Database,Javafx,我正在构建一个足球联赛管理系统,我使用javaFx构建了用户界面,我创建了这个类来使用数据库填充表 public class TableHandler { public static ObservableList<Team> getTeams() { ObservableList<Team> list = FXCollections.observableArrayList(); DBConnection db; t

我正在构建一个足球联赛管理系统,我使用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;

    }
公共类TableHandler{
公共静态可观察列表getTeams(){
ObservableList=FXCollections.observableArrayList();
数据库连接数据库;
试一试{
db=新的DBConnection();
String sql=“从团队中选择*”;
ResultSet result=db.read(sql);
while(result.next()){
添加新团队(result.getInt(1)、result.getString(2)、result.getString(3)、result.getInt(4),
结果:getDouble(5));
}
}捕获(例外e){
e、 getMessage();
}
退货清单;
}
公共静态TableView可获取(ObservableList){
表视图表;
TableColumn idColumn=新的TableColumn(“ID”);
idColumn.setCellValueFactory(新属性ValueFactory(“id”);
TableColumn Name column=新的TableColumn(“名称”);
nameColumn.setCellValueFactory(新属性ValueFactory(“名称”);
TableColumn phoneNumber Column=新的TableColumn(“phoneNumber”);
电话号码Column.setCellValueFactory(新属性ValueFactory(“电话号码”));
TableColumn Points Column=新的TableColumn(“点”);
pointsColumn.setCellValueFactory(新的PropertyValueFactory(“points”));
TableColumn budgetColumn=新的TableColumn(“预算”);
budgetColumn.setCellValueFactory(新属性ValueFactory(“预算”));
table=新的TableView();
表2.设置项目(列表);
table.getColumns().addAll(idColumn、nameColumn、phoneNumberColumn、pointsColumn、budgetColumn);
返回表;
}

我创建了一个按钮,用户可以将团队添加到表中,但我无法确定的是,当用户点击“添加”按钮时,如何刷新表,任何帮助都会得到提示。

您不必这样做。可观察列表的基本思想是,
TableView
观察表中的更改,并相应地呈现值更改。


您必须确保的是,您正在向实际上绑定到
TableView
的集合中添加元素,而不是其他元素。您没有发布添加项的代码,因此很难说,但是如果您使用
getTeams()
然后添加到该集合中,那么这是错误的(因为它是一个新的
可观察列表
,而不是绑定到
表视图
)的列表。您应该始终使用
表.getItems().add(…)
要将项目添加到
表视图
中,您不必这样做。可观察列表的概念就是
表视图
观察其中的更改,并相应地呈现值更改

您必须确保的是,您正在向实际上绑定到
TableView
的集合中添加元素,而不是其他元素。您没有发布添加项的代码,因此很难说,但是如果您使用
getTeams()
然后添加到该集合中,那么这是错误的(因为它是一个新的
可观察列表
,而不是绑定到
表视图
)的列表。您应该始终使用
table.getItems()。添加(…)
将项目添加到
表视图