1

同時にいくつかのウィンドウを開く新しいアプリケーションを開発しています。現在、GUI を設計しようとしていますが、次の 2 つの選択肢に苦労しています。

  1. サイド ナビゲーション パネルを使用し、ページの中央を使用して各パネルのコンテンツを表示できます。これらのパネルは flyweight パターンに従って保存され、ナビゲーション ボタンがクリックされたときに非表示/表示するだけです (ユーザー登録フォームなど、非表示のときと同じようにコンテンツを保存するため)。

  2. メニュー全体を表示するフロントページを使用し、ポップアップ/新しいウィンドウを使用してコンテンツを表示できます。これらは閉じる/最小化するなど)。

私の問題は次のとおりです。すべてのパネルがフライウェイト パターンに格納されている場合はどうなりますか? パフォーマンスが大幅に向上しますか、それとも 15 個の JPanel を保存してもスムーズに動作しますか? (もちろん、これらの JPanel には、フォームなどの多くのコンテンツが含まれている場合があります)。

使いやすさ/パフォーマンスの面で最適な選択肢は何だと思いますか?

ありがとうございました :)

4

2 に答える 2

4

JTable レンダリングではすでにflyweight パターンが使用されているため、選択には 1 列のテーブルが理想的です。カスタム レンダラーは任意のサムネイル表現をListSelectionListener表示できますが、 は隣接するコンテナに任意の詳細を表示できます。で、個々のデータ レコードが大量のメモリを消費している場合は、 LRU キャッシュTableModelを検討してください。

パフォーマンスに関する質問と同様に、prototypeprofile .

于 2012-08-02T17:02:52.210 に答える
3

合理的にヒープに収まる以上のデータを保持しようとしない限り、最近ではパフォーマンスは問題になりません (非常に悪いことをしない限り、ユーザーの観点からパフォーマンスの違いに気付くことはありません)。

とはいえ、現在必要のない GUI を保持する差し迫った理由がない限り、それらを GC して、必要に応じて再作成させてください。アプリケーションを変更する必要がある場合は、1 回の使用後に作成して破棄する方法の方が柔軟性が高く、メモリ リークの可能性が少なくなります。

GUI デザインの面では、多くの人がポップアップを絶対に嫌っています。また、フォーカス管理/キーボードの使用を妨げる可能性もあります。ただし、必要な制御フローの種類によって異なります。サイド メニュー バーは、多くの目的に適しています。

サイド メニューは、タブ付きペイン(自分で実装する必要のない標準コンポーネント) を巧妙に再発明したものに過ぎないことを指摘したいと思います。また、物事を特定の順序で行う必要がある場合は、ウィザードのようなアプローチも良い選択です (各ステップが完了すると内容が変わる 1 つのウィンドウ)。

于 2012-08-02T15:35:36.440 に答える