2011-12-30 62 views
2

所以我有以下問題。 我創建了一個非常多的組件的JInternalFrame(可以說50 000的文本區域)。首先,我做所有的邏輯(捕獲顯示在文本區域中的所有數據),並在將框架設置爲可見之後,讓程序凍結(我認爲它會繪製所有組件)。使用Java中的大量組件優化JFrame的繪製

什麼是優化繪畫的最佳方式? 我想我應該使用單獨的線程,以便程序不會凍結,但是最好的方法是什麼? 我應該先設置框架可見,然後在線程中進行登錄,或者我應該執行所有登錄,然後在線程中繪製它(如果是這樣,如何繪製父級以外的子組件)還是其他內容?

在此先感謝

回答

4

擺動組件不得在EDT之外使用。所以添加線程不是一個選項。顯而易見的選擇是不要有儘可能多的組件。包含50,000個文本區域的用戶界面不可用。重新設計用戶界面。

+0

+1可用性。 [flyweight pattern](http://en.wikipedia.org/wiki/Flyweight_pattern)是一個潛在的選擇,例如。 'JTable'。 – trashgod 2011-12-30 21:31:15

4

一個問題是調用pack()的佈局。適當的LayoutManager和設置(Preffered | Minimum | Maximum)大小將有所幫助。

看來你正在做一種電子表格,在一個JScrollPane中。在這種情況下,JTable可能會通過虛擬模型來幫助鼠標hoover上的文本區域。 (JTable將不同的單元重複使用相同的組件。)

+0

是的,我會嘗試使用JTable – Icki 2011-12-30 20:46:41

+0

對JTable進行+1。 – trashgod 2011-12-30 21:32:04

+0

這麼好的答案+1 – mKorbel 2012-01-07 20:57:13