0

TableView で一連の金融取引を表示したいと思います。各トランザクションは、日付、説明、および金額で構成されます。

別の質問への回答に示されている例を使用して、すべてのセルをテキストとして扱う場合、バインディングを使用してこれを機能させることができます。これにより、私の目標であるセル編集が可能になります。

しかし、日付と金額の列で機能させることができません。セルの種類ごとに個別のセルファクトリと、おそらく個別の updateItem メソッドが必要だと思いますが、行き詰まっています。

例や提案へのポインタは役に立ちます。

4

1 に答える 1

1

http://www.javafxdata.org/の DataFX プロジェクト と、具体的には http://www.javafxdata.org/javadoc/org/javafxdata/control/cell/TextFieldCellFactory のようなセル ファクトリ を確認することをお勧めします。 html

DataFX には、いくつかのデータ型、テーブル、リスト、およびツリー ビュー用のカスタム セル ファクトリが含まれています。たとえば、金額に double 型があると仮定すると、TableColum のサブクラスに似たようなものを書くことができます (??? を、テーブル内の行を表すクラスのクラス名に置き換えます)。

setCellFactory(TextFieldCellFactory.<???, Number>forTableColumn(new Callback<String,Number>(){
        @Override
        public Number call(String newValueStr) {
            double newValue = Double.parseDouble(newValueStr);
            return newValue;    
    }));

setOnEditCommit(new EventHandler<CellEditEvent<???, Number>>() {
        @Override
        public void handle(CellEditEvent<???, Number> t) {
            double newValue = t.getNewValue().doubleValue();
            // do something with the double value the user entered here     
        }
    });
}

}

少なくとも何らかの方向性を示してくれることを願っています。わかりやすくするために、例外処理を省略しました。

于 2012-06-29T09:28:50.430 に答える