私はJavaFXTableViewを次のように定義しています:
TableView<MyMessage> messages;
ObservableListでサポートされています:
private ObservableList<MyMessage> messagesList;
// Allocate the message list
messagesList = FXCollections.observableArrayList();
// Set the list into place
messages.setItems( messagesList );
MyMessageオブジェクトには、すべてString型の10個のフィールドがあります。MyMessageオブジェクトをObservableListに挿入するバックグラウンド操作があります。
messages.add( new MyMessage( String ... colData ) );
すべてが宣伝どおりに機能します。TableViewのテーブル行は、オブジェクトがObservableListに挿入されるときに更新されます。
期待どおりに機能していないように見えるのは、列ヘッダーをクリックしてテーブルを並べ替えると、バックグラウンドスレッドによって挿入された後続のアイテムがテーブルの最後に追加されることです。適切にソートされた行の位置ではありません。クリックして列を再配置すると、テーブルは適切に再配置されます。
ObservableListに何かを追加するたびに、テーブルを強制的に再ソートする必要がありますか?または、TableViewがそれを処理する必要があります。
ありがとう。