2016-08-01 7 views

答えて

0

:デフォルト

TableColumn編集現在ビーイング編集行の アイテムのプロパティ値を上書きしようと デフォルトのハンドラで、ハンドラが非ヌルであるコミット。これは Cell.commitEdit(Object)メソッドが新しい値で渡され、 が実行されたCellEditEventによって編集コミットハンドラに渡された であるため、これを行うことができます。この値を取得するには、単に TableColumn.CellEditEvent.getNewValue()を呼び出してください。

それはあなたがEventHandler あなた自身で TableColumn.setOnEditCommit(javafx.event.EventHandler)を呼び出した場合、その後、あなたはデフォルトのハンドラを削除されることに注意してくださいすることが非常に重要です。 プロパティ(または関連するデータ ソース)へのライトバックを処理しない限り、何も起こりません。 TableColumnBase.addEventHandler(javafx.event.EventType, javafx.event.EventHandler)メソッドを使用して、 TableColumn.EDIT_COMMIT_EVENTイベントタイプを追加し、2番目の引数として希望するEventHandler を追加することで回避できます。この方法を使用すると、 のデフォルト実装が置き換えられることはありませんが、編集コミット が発生したときに通知されます。

デフォルトでは、commitEdit(...)を呼び出すと、TableColumnはセルによって表される値を更新しようとします。 TableColumn.setOnEditCommit(...)を呼び出してイベントハンドラを設定すると、デフォルトの動作が削除されます。

デフォルトのメカニズムは、列のcellValueFactoryによって返されたオブジェクトをWritableValueにキャストし、そのsetValue()メソッドを呼び出すことによって機能することにも注意してください。したがって、これは(本質的に)テーブルのバッキングモデルがJavaFX properties patternを使用する場合にのみ機能します。言い換えれば、あなたはあなたのテーブルのためのモデルでxxxProperty()方法はWritableValue(例えばPropertyオブジェクト)の実装を返します

column.setCellValueFactory(cellData -> cellData.getValue().xxxProperty()); 

と同等の何かを持っている必要があります。

+0

ありがとう、私が持っていた問題を解決するのに役立ちました。 – miquel09

関連する問題