0

ObservableList でサポートされている ListView を持つ javafx アプリケーションを開発しています。

@FXML
private ListView<String> taggedQueriesResultsList;
private ObservableList<String> searchResultsList = FXCollections.observableArrayList();

ObservableList は、たとえばlist.add("something")、 を使用してスケジュールされたタスクによってデータで更新されますExecutors.newSingleThreadScheduledExecutor()。ただし、スケジュールされたタスクは、初回以降は実行されません。UI は、最初の実行後に更新されます。行をコメントアウトするとlist.add("something")、タスクがスケジュールどおりに定期的に実行されることに気付きました。

これは同期の問題だと思いますが、よくわかりません。何が起こっているのか、問題を解決する方法を理解するのを手伝ってください。

4

2 に答える 2

1

GUI は常にアプリケーション スレッドから更新するようにしてください。http://docs.oracle.com/javafx/2/threads/jfxpub-threads.htmを参照してください。

スレッド セーフな ObservableCollection については、こちらを参照してください:高速でスレッド セーフな監視可能なコレクション

于 2013-07-11T08:27:44.157 に答える
0

同期された Observable リストが作成される例:

newSeries = new XYChart.Series<>();
ObservableList<XYChart.Data<Number, Number>> listaSerie;
listaSerie = FXCollections.synchronizedObservableList(FXCollections.observableList(new ArrayList<XYChart.Data<Number, Number>>()));
newSeries.setData(listaSerie);
于 2014-03-26T05:47:32.367 に答える