2017-11-18 12 views
0

私はサッカーリーグの管理システムを構築しています。私は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; 

    } 

と私は、ユーザーがテーブルにチームを追加するためのボタンを作成し、私が出てfiguerことができないと、ユーザーは任意のヘルプはにappriciatedされるだろう、追加ボタンを打ったときに、テーブルを更新する方法です。

答えて

2

あなたはそうする必要はありません。観測可能なリストの考え方は、TableViewがその変化を観察し、それに応じて値が変化することです。

実際にTableViewにバインドされた要素を他の要素に追加していないことを確認する必要があります。アイテムを追加するコードを投稿していないので、わかりにくいですが、getTeams()を使用してそれに追加すると、それは間違っています(新しいObservableListであり、TableViewにバインドされていないためです)。 TableViewに商品を追加するには、常にtable.getItems().add(...)を使用する必要があります。

+0

@Pioter Wilkinありがとうございました – fareed

関連する問題