2016-05-11 5 views
0

私はProtein、Carbohydrates、Fat(すべてのTableViewテーブルの列)などの食品要素を再計算できるはずのJava(JavaFX)でFood Calculatorを作成していますユーザーはTableViewで編集を確認します。JavaFX - 私のTableViewを編集可能にする方法が分かりません

テーブルセルを編集可能にする方法がわかりません。私はドキュメンテーションを全く理解していません。

これは私のコラムを作成する方法です。私はsetCellValueFactorySetCellFactoryに変更しなければならないと読んだことがありますが、なぜその機能にパラメータとして渡す必要があるのか​​わかりません。テーブルに食べ物フィールドをどこに割り当てるのですか?

TableColumn<Food, Float> tableFoodFat = new TableColumn<>("Fat"); 
tableFoodFat.setCellValueFactory(new PropertyValueFactory<>("fat")); 
tableFoodFat.setMinWidth(100); 

私は本当に混乱しています。誰でも簡単な言葉で答えて私を助けてくれますか?私は自分でコードを書くことができます、私は何を、なぜ私はそれを変更すべきかを理解する必要があります。

EDIT:これは、文字列データを含む列のために働く - tableFoodTitle.setCellFactory(TextFieldTableCell.<Food>forTableColumn());が、それは私がフロートデータを列に、この概念を使用しようとしていますエラーがスローされます。

答えて

0

試してみてください!あなたはテーブルセルを編集可能にします!

tableFoodFat.setCellFactory(TextFieldTableCell.forTableColumn(new FloatStringConvert‌​er)); 
tableFoodFat.setOnEditCommit(new EventHandler<CellEditEvent<Food, Float>>() { 
      @Override 
      public void handle(CellEditEvent<Food, Float> t) { 
       ((Food) t.getTableView().getItems().get(t.getTablePosition().getRow())).setFOODFAT(t.getNewValue()); 
      } 
     }); 

ちょうどここsetFOODFAT

をatentionを支払うが、それが役立つことを願って!

+0

Iは、次いで、これを取得: '非互換タイプ:コールバック、のTableCell >はSがAでコールバック、のTableCell > に適合するように型変数のインスタンス(複数可)(S)Sは存在しません型変数: Sは forTableColumn(メソッドで宣言されたオブジェクトを拡張) ' –

+0

うん、あなたは私が送って... tableFoodFat.setCellFactory(TextFieldTableCell.forTableColumn(FloatStringConverter))...これを試して文字列ではないフロートしています。 tableFoodFat.setOnEditCommit(新しいのEventHandler >(){@Override ます。public voidハンドル(CellEditEvent トン){ ((食品)t.getTableView()。のgetItems()。(t.getTablePosition()を取得。 getRow()))。setFOODFAT(t.getNewValue()); } }); – Rubens

+0

ありがとうございましたが、私は自分自身を考え出したと思います。私は 'forTableColumn'関数に' new FloatStringConverter() 'を渡しました。私のソフトウェアのすべての部分でうまくいくなら、私は自分の方法を使って答えを投稿します。どこかで失敗したら、私はあなたの解決策を試みます。 –

関連する問題