1
我在(比較舊的)應用程序目前修復bug:AWT:計算組件的尺寸立即
它涉及具有延遲加載功能,並具有快速搜索文本字段的樹。假定存在以下情況:
- 有人類型在快速搜索文本字段
- 這將導致查詢發送到後臺服務器,搜索與輸入的名稱可用的樹節點,並在下降爲他們提供了一個字符串羽絨風格。
- 用戶從下拉列表中選擇一個項目。
- 展開所選元素路徑中樹中的所有節點,導致延遲加載樹加載...以及一堆節點。
- 樹(具有滾動條)滾動,以便所選元素處於視圖中。
第1步到第4步工作得很好,但第5步只有在樹不需要延遲加載元素時纔有效,但是之前已經加載了樹。
經過一段時間的調試後,我發現這是因爲計算出滾動量的代碼使用了表示樹節點的AWT元素的維數。但是,如果這些元素是惰性加載的,則這些維度不會被計算出來,因此代碼無效。我想維度計算將在重繪方法中發生。或者無論如何:太晚了。
如何讓AWT立即計算元件尺寸?
該代碼在AWT之上使用Thinlet。
你知道可視樹中的元素至少有多少是以上節點要選擇,並深深它在樹?在延遲加載發生之前可以知道這個嗎?如果不是,那麼AWT不能做魔術。 –
@MikhailVladimirov:不,我在延遲加載之前不知道這一點,但延遲加載代碼是同步的。在執行滾動代碼之前,元素將被完全加載。所有數據都在那裏,但它只是沒有渲染。 – yankee