2011-10-14 25 views
0

私のスイングアプリケーションでは、JTreeとJTableを使用して同じ日付を表示したいと思います。 コンポーネントは、ユーザーの選択に応じて(たとえば、トグルボタンを使用して)互換的に表示/表示する必要があります。ボタンが押された場合は、JTreeが表示されます(JTableでない場合)。 質問:正しい方法でそれを行う方法。 私はstacklayoutを試して、次/前のコンポーネントを表示しましたが、それは良い解決策ではないようです。どちらのコンポーネントもメモリを使用し、両方が同時に存在します。 2番目の解決策は、パネルからコンポーネントを削除し、新しいコンポーネントを作成することです。また、メモリ/時間がかかることもあります。 提案や解決策はありますか?スイングコンポーネント間のインプレース切り替え

答えて

1

CardLayoutはこれに最も適しているようですが、もちろん両方のコンポーネントをメモリに保持します。実際にこれが問題であるという兆候はありますか、または早すぎる最適化の心配に苦しんでいますか?

+0

私はまだCardLayoutを試していませんでした。それはパフォーマンスに関する私の懸念のようです。現時点では、テーブルに大量のデータをロードする際にOutOfMemory例外が発生します(レイジーローディングについて考えるべきですが、それはテーマではありません)。しかし、とにかく、意見に感謝します。 –

1

既存のコンポーネントを削除して新しいコンポーネントをパネルに追加することは、パフォーマンス面で大きな問題ではありません。また、削除されたオブジェクト(たとえば、JTree)への参照がないことを確認した場合は、メモリに問題はないはずです。