2011-12-30 10 views
2

次の問題があります。 コンポーネントの数が非常に多いJInternalFrameを作成します(テキスト領域を50,000とします)。最初に、すべてのロジック(テキストエリアに表示されているすべてのデータをキャプチャ)を行い、フレームを表示した後、プログラムがフリーズする(すべてのコンポーネントをペイントすると仮定します)。Javaで多数のコンポーネントを持つJFrameのペイントを最適化する

絵画を最適化するにはどうすればよいでしょうか? 私は別のスレッドを使うべきだと思うので、プログラムはフリーズしませんが、何が最善の方法でしょうか? フレームを最初に表示してからスレッドでログインするか、すべてのログインを行ってからスレッドでペイントする必要がありますか(親コンポーネントとは別に子コンポーネントをペイントする方法があれば)

おかげで、事前に

答えて

4

Swingコンポーネントは、EDTの外で使用されなくてもよいです。スレッドを追加することはオプションではありません。明らかな選択肢は、多くのコンポーネントを持つことではありません。 50,000のテキスト領域を持つUIは使用できません。 UIを再設計する。

+0

+1のユーザビリティ。 [フライウェイトパターン](http://en.wikipedia.org/wiki/Flyweight_pattern)は潜在的な代替案です。 'JTable'。 – trashgod

4

1つの問題は、pack()を呼び出す際のレイアウトです。適切なLayoutManagerとSet(Preffered | Minimum | Maximum)Sizeが役立ちます。

スプレッドシートのように、JScrollPane内にあるようです。その場合、JTableは仮想モデルを使用して、マウスフーバー上のテキスト領域を手助けするかもしれません。 (JTableは、異なるセルに同じコンポーネントを再利用します。)

+0

うん、私は 'JTable'のためにJTable – Icki

+0

+1で試してみます。 – trashgod

+0

とても良い答え+1 – mKorbel

関連する問題