簡體   English   中英

Scala ScalaFX:如何處理 Observable* 的大量變化

[英]Scala ScalaFX: how to deal with large set of changes of Observable*

我正在使用ObservableMap進行數據建模,並且想要更新整個條目。 最初ObservableMap是空的,它被大量元素異步填充。

現在的問題是,每個條目都會觸發一個onChanged事件,這會產生過多的事件並導致 GUI 陷入困境。 我使用了pkgs.clear() ; pkgs ++= newpkgs pkgs.clear() ; pkgs ++= newpkgs

有沒有辦法只觸發一個onChanged ,或者通過暫時禁用處理程序,或者通過在地圖上進行更新所有元素但僅在之后觸發的操作。

我不知道禁用/延遲/緩沖 UI 更新的機制。

我不知道其他 JavaFX 視圖類型,但我有在類似情況下使用TableView經驗。 我懷疑其他觀點在這方面可能是相似的。

至少TableView有一個名為itemsProperty的屬性。 當數據itemsProperty使用更新setItems (包裝為itemsProperty.set(value) ),該表將嘗試很難更新只是它的最低片的自我。

但是,要使優化起作用,關鍵是項目必須是“值對象”( hashCodeequals很深並且基於顯示的實際數據而不是一些隨機引用。)

TableView的情況下,這可能需要詳細的rowFactorycellFactory實現。 原因是items中的數據不能以任何方式“預格式化”,否則會破壞TableView內部的優化。

意識到上述問題,解決了我的更新流失問題。 也許其他答案可以提供其他提示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM