我正在建立一个足球联赛管理系统,我使用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;
}
我创建了一个按钮,用户可以将团队添加到表中,当用户点击添加按钮时,我无法想象的是如何刷新表格,任何帮助都会得到满足。
答案 0 :(得分:2)
你不必。可观察列表的概念是TableView
观察其中的变化并相应地改变值。
您必须确保的是,您要将元素添加到实际绑定到TableView
的集合而不是其他任何元素。您没有发布添加项目的代码,因此很难说,但如果您使用getTeams()
然后再添加,那就错了(因为它是一个新的ObservableList
而不是与TableView
绑定的那个。您应始终使用table.getItems().add(...)
将项目添加到TableView
。