私はProtein、Carbohydrates、Fat(すべてのTableViewテーブルの列)などの食品要素を再計算できるはずのJava(JavaFX)でFood Calculatorを作成していますユーザーはTableViewで編集を確認します。JavaFX - 私のTableViewを編集可能にする方法が分かりません
テーブルセルを編集可能にする方法がわかりません。私はドキュメンテーションを全く理解していません。
これは私のコラムを作成する方法です。私はsetCellValueFactory
をSetCellFactory
に変更しなければならないと読んだことがありますが、なぜその機能にパラメータとして渡す必要があるのかわかりません。テーブルに食べ物フィールドをどこに割り当てるのですか?
TableColumn<Food, Float> tableFoodFat = new TableColumn<>("Fat");
tableFoodFat.setCellValueFactory(new PropertyValueFactory<>("fat"));
tableFoodFat.setMinWidth(100);
私は本当に混乱しています。誰でも簡単な言葉で答えて私を助けてくれますか?私は自分でコードを書くことができます、私は何を、なぜ私はそれを変更すべきかを理解する必要があります。
EDIT:これは、文字列データを含む列のために働く - tableFoodTitle.setCellFactory(TextFieldTableCell.<Food>forTableColumn());
が、それは私がフロートデータを列に、この概念を使用しようとしていますエラーがスローされます。
Iは、次いで、これを取得: '非互換タイプ:コールバック、のTableCell
>はSがAでコールバック、のTableCell > に適合するように型変数のインスタンス(複数可)(S)Sは存在しません型変数: Sは forTableColumn(メソッドで宣言されたオブジェクトを拡張) ' –うん、あなたは私が送って... tableFoodFat.setCellFactory(TextFieldTableCell.forTableColumn(FloatStringConverter))...これを試して文字列ではないフロートしています。 tableFoodFat.setOnEditCommit(新しいのEventHandler>(){@Override ます。public voidハンドル(CellEditEvent トン){ ((食品)t.getTableView()。のgetItems()。(t.getTablePosition()を取得。 getRow()))。setFOODFAT(t.getNewValue()); } }); –
Rubens
ありがとうございましたが、私は自分自身を考え出したと思います。私は 'forTableColumn'関数に' new FloatStringConverter() 'を渡しました。私のソフトウェアのすべての部分でうまくいくなら、私は自分の方法を使って答えを投稿します。どこかで失敗したら、私はあなたの解決策を試みます。 –