1. ホーム
  2. java

[解決済み] 複数のJFrameを使用すること。グッドプラクティスかバッドプラクティスか?[終了しました]。

2022-03-18 11:49:57

質問

データベースから画像を表示したり、音声を再生したりするアプリケーションを開発しています。GUIからデータベースに画像を追加するために、別のJFrameを使用するかどうかを決めかねています。

複数のJFrameウィンドウを使用することは良いことなのでしょうか?

どのように解決するのですか?

<ブロッククオート

複数のJFrameを使用することは良いことなのでしょうか?

悪い(bad, bad)習慣です。

  • ユーザーフレンドリー:タスクバーに1つしか表示されないと思っていたのに、複数のアイコンが表示される。 さらに、コーディングの問題による副作用も...。
  • コーディングとメンテナンスの悪夢。
    • A モーダルダイアログ は、そのダイアログの内容に注意を向ける簡単な機会を提供します - これを選択/修正/キャンセルしてください。 では が進みます。 複数のフレームはそうではありません。
    • 親を持つダイアログ(またはフローティングツールバー)は、親がクリックされると前面に出てきます。それが望ましい動作であれば、フレームでそれを実装しなければなりません。

1つのGUIで多くの要素を表示する方法はいくらでもあります、例えば。

  • CardLayout (短い デモを行います。 ). に良い。
    1. ウィザードのようなダイアログを表示する。
    2. 関連するコンポーネントを持つアイテムのリスト、ツリーなどの選択項目を表示する。
    3. コンポーネントなしとコンポーネントありを反転させることができます。
  • JInternalFrame / JDesktopPane は、通常 MDI .
  • JTabbedPane コンポーネントのグループ用です。
  • JSplitPane 2つのコンポーネントを表示する方法で、ユーザーの操作に応じて、どちらか一方の重要度(サイズ)が変化します。
  • JLayeredPane 多くの優れたレイヤーコンポーネントがあります。
  • JToolBar 通常、アクションやコントロールのグループを含む。 ユーザーのニーズに応じて、GUIの周りにドラッグしたり、完全にGUIから外したりすることができます。 上記のように、親がそうすることによって、最小化/復元されます。
  • の項目として JList (以下、簡単な例)。
  • のノードとして JTree .
  • ネストされたレイアウト .

しかし、これらの戦略が特定のユースケースでうまくいかない場合、次のことを試してみてください。 1つのメイン JFrame そして JDialog または JOptionPane インスタンスが残りのフリーフローティング要素に表示され、ダイアログの親としてフレームが使用されます。

多くの画像

複数の要素が画像であるこの場合、代わりに以下のいずれかを使用するのがよいでしょう。

  1. 単一の JLabel (スクロールペインの中央に)ユーザーがその時点で興味を持っている画像を表示することができます。 例えば ImageViewer .
  2. 一列 JList . で見られるように この答え . 一列」の部分は、すべて同じ寸法の場合にのみ機能します。 あるいは、画像をその場で拡大縮小する用意があり、すべて同じアスペクト比(例:4:3または16:9)である場合。