[英]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)
),該表將嘗試很難更新只是它的最低片的自我。
但是,要使優化起作用,關鍵是項目必須是“值對象”( hashCode
和equals
很深並且基於顯示的實際數據而不是一些隨機引用。)
在TableView
的情況下,這可能需要詳細的rowFactory
和cellFactory
實現。 原因是items
中的數據不能以任何方式“預格式化”,否則會破壞TableView
內部的優化。
意識到上述問題,解決了我的更新流失問題。 也許其他答案可以提供其他提示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.