2017-02-22 25 views
1

Doubleプロパティを編集できるようにTableCellのコンバーターを設定するにはどうすればよいですか?JavaFX編集可能TableCell for doubleプロパティ

<TableColumn fx:id="priceCol" text="Price"> 
    <cellValueFactory> 
    <PropertyValueFactory property="price" /> 
    </cellValueFactory> 
    <cellFactory> 
    <TextFieldTableCell fx:factory="forTableColumn"> 
     <converter> 
     // ??? 
     </converter> 
    </TextFieldTableCell> 
    </cellFactory> 
</TableColumn> 

FXMLでこれらの種類の設定を行う方法のドキュメントはどこにありますか?これまでのところ、これは本当に混乱しています。

答えて

2

私が見る限り、これをFXMLで行う方法はありません。

TableColumnに提供しているcellFactoryは、そのタイプがCallback<TableColumn<?,?>,TableCell<?,?>>です。静的ファクトリメソッドTextFieldTableCell.forTableColumn()FXMLLoaderが要素<TextFieldTableCell fx:factory="forTableColumn">に従って作成するもの)の呼び出しによって返されたオブジェクトは、このタイプのものです。

FXMLコード

あなたは TextFieldTableCell.forTableColumn()によって返されたオブジェクトに setConverter(...)を起動しようとして、そしてもちろん Callbackのように関係なく、あなたは仕事に行くのではありません <converter>の子タグとして含めるものを、 setConverter(...)メソッドを定義しません。

FXMLには、fx:factoryで呼び出されるファクトリメソッドにパラメータを指定する方法がありません(これは私があなたが意図していると思います)。コントローラでこれを行う必要があると思います。

もちろん、後者はかなり簡単です。ただ、FXMLで

<TableColumn fx:id="priceCol" text="Price"> 
    <cellValueFactory> 
    <PropertyValueFactory property="price" /> 
    </cellValueFactory> 
</TableColumn> 

を行うには、あなたのコントローラに

public void initialize() { 
    priceCol.setCellFactory(TextFieldTableCell.forTableColumn(new DoubleStringConverter())); 
} 
+0

はありがとうございます。私はどこかでそれを見たことを誓うことができたかもしれませんが、たぶんそれを作りました...私は別の小さな質問があります:どのように私はいつも編集状態にある特定のセルを作ることができますか? –

関連する問題