画像を表示し、データベースから音声を再生するアプリケーションを開発しています。GUIからデータベースに画像を追加するために別のJFrameを使用するかどうかを決定しようとしています。
複数のJFrameウィンドウを使用するのが良い習慣かどうか疑問に思っていますか?
複数のJFrameを使用するのが良い習慣かどうか疑問に思っていますか?
悪い(悪い、悪い)練習。
1つのGUIに多くの要素を表示する方法はいくつもあります。例:
CardLayout
(短いデモ。)。良い:
JInternalFrame
/JDesktopPane
通常はMDIに使用されます。JTabbedPane
コンポーネントのグループ用。JSplitPane
ユーザーが何をしているかによって、どちらか一方の重要度(サイズ)が異なる2つのコンポーネントを表示する方法。JLayeredPane
はるかに多くのよく層状のコンポーネント。JToolBar
通常、アクションまたはコントロールのグループが含まれます。ユーザーの必要に応じて、GUIの周りにドラッグしたり、GUIから完全に外したりできます。上記のように、そうする親に応じて最小化/復元します。JList
(以下の簡単な例)。JTree
。ただし、これらの戦略が特定のユースケースで機能しない場合は、次のことを試してください。単一のメインを確立しJFrame
、その後、持っているJDialog
かJOptionPane
のインスタンスは、ダイアログの親としてフレームを使用して、自由に浮動要素の残りのために表示されます。
複数の要素が画像であるこの場合、代わりに次のいずれかを使用することをお勧めします。
JLabel
その時点でユーザーが興味を持っている画像を表示するための単一の(スクロールペインの中央にある)。に見られるようにImageViewer
。JList
。この答えに見られるように。その「単一行」の部分は、それらがすべて同じ次元である場合にのみ機能します。または、画像をその場で拡大縮小する準備ができていて、それらがすべて同じアスペクト比(4:3または16:9など)である場合。複数のJFrame
アプローチは、Swingアプリのプログラミングを始めてから実装してきました。ほとんどの場合、私はそれ以上のことを知らなかったので、最初にそれをしました。しかし、開発者としての経験と知識が成熟し、より多くの経験豊富なJava開発者の意見をオンラインで読み、吸収し始めたので、複数のアプローチ(現在のプロジェクトと将来のプロジェクトの両方)からシフトしようとしJFrame
ました。 )会うためだけに...これを手に入れてください...私のクライアントからの抵抗!JInternalFrame
個別のコンポーネントの「子」ウィンドウとを制御するモーダルダイアログの実装を開始すると、クライアントから不満が出始めました。ベストプラクティスだと思ったことをやっていたので、とても驚きました。しかし、彼らが言うように、「幸せな妻は幸せな人生です」。同じことがあなたのクライアントにも当てはまります。もちろん、私は請負業者なので、エンドユーザーは開発者である私に直接アクセスできますが、これは明らかに一般的なシナリオではありません。
そこで、複数のJFrame
アプローチの利点と、他の人が提示したいくつかの短所について説明します。
JFrame
のを許可することにより、エンドユーザーが画面の内容を広げて制御できるようになります。コンセプトは「オープン」で非収縮性を感じます。あなたが1つの大きなJFrame
とたくさんのJInternalFrame
sに向かって行くとき、あなたはこれを失います。JFrame
sでした。ただし、データ入力画面はJDialog
、親がデータビューアであるようにしたかったのです。私は、変更を行った、とすぐに私は彼が最小化または閉じることができたという事実に大きく依存し、エンドユーザーからの電話受信ビューアをしておくエディタを彼がプログラム(またはウェブサイトの別の部分を参照しながら、オープン、Iドン覚えていない)。彼はマルチモニターを使用していないため、データビューアを完全に非表示にして、入力ダイアログを最初に、他の何かを2番目にする必要がありました。これはaでは不可能でしたし、aでも不可能だったJDialog
でしょうJInternalFrame
。私はしぶしぶJFrames
彼の正気のためにそれを分離するように戻しました、しかしそれは私に重要な教訓を教えてくれました。JInternalFrame
以上をJFrame
。実際、私の経験では、JInternalFrames
柔軟性ははるかに低くなっています。私はJFrame
自分のアプリでsの開閉を処理する体系的な方法を開発しました。これは本当にうまく機能します。フレームのコード自体からほぼ完全にフレームを制御します。新しいフレームの作成、SwingWorker
などその制御にバックグラウンドスレッドとEDT上のGUIコード上のデータの検索をね、ユーザーはそれを2回開こうとした場合、フレームのフロントに持ち込む/リストア、あなたが私の開く必要があるすべてのJFrame
sがありますパブリック静的メソッドopen()
を呼び出し、windowClosing()
イベントと組み合わせてopenメソッドが残りを処理します(フレームはすでに開いていますか?開いていませんが、ロードしていますか?など)このアプローチをテンプレートにしたので、フレームごとに実装するのは難しくありません。JFrame
も、より多くのスペースが必要であると言えるかもしれませんが、実際にどれだけ多くのリソースを消費しますか?リソースが原因でメモリリークが発生することが懸念される場合:呼び出すと、フレームがガベージコレクションに使用するすべてのリソースが解放されます(繰り返しますが、aはまったく同じ懸念を呼び出す必要があります)。JInternalFrame
JFrame
dispose()
JInternalFrame
たくさん書いたので、もっと書ける気がします。とにかく、それが不評な意見であるという理由だけで私が反対票を投じないことを望みます。この質問は明らかに貴重なものであり、一般的な意見ではない場合でも、貴重な回答を提供できたと思います。
複数のフレーム/フレームごとの単一のドキュメント(SDI)と単一のフレーム/フレームごとの複数のドキュメント(MDI)の良い例は、MicrosoftExcelです。MDIの利点のいくつか:
SDI(シングルドキュメントインターフェイス、つまり、すべてのウィンドウに1つのドキュメントしか含めることができません):
MDI(Multiple-Document Interface、つまり、すべてのウィンドウに複数のドキュメントを含めることができます):
私が関わったばかりの例で、「ユーザーフレンドリーではない」という議論に対抗したいと思います。
このアプリケーションには、ユーザーがさまざまな「プログラム」を個別のタブとして実行するメインウィンドウがあります。可能な限り、アプリケーションをこの単一のウィンドウに維持しようとしました。
それらが実行する「プログラム」の1つは、システムによって生成されたレポートのリストを表示し、ユーザーは各行のアイコンをクリックして、レポートビューアダイアログをポップオープンできます。このビューアは、レポートの縦向き/横向きのA4ページに相当するものを表示しているため、ユーザーはこのウィンドウが非常に大きく、画面いっぱいに表示されることを好みます。
数か月前、複数のレポートを同時に開くことができるように、これらのレポートビューアウィンドウをモードレスにするようにお客様からリクエストを受け取り始めました。
これが良い解決策だとは思わなかったので、しばらくの間、私はこの要求に抵抗しました。しかし、ユーザーがこのシステムの「欠陥」をどのように回避しているかを知ったとき、私の考えは変わりました。
彼らはビューアを開き、「名前を付けて保存」機能を使用してレポートをPDFとして特定のディレクトリに保存し、Acrobat Readerを使用してPDFファイルを開き、次のレポートでも同じことを行いました。複数のAcrobatReaderが実行され、見たいさまざまなレポート出力が表示されます。
それで私は容赦し、視聴者をモードレスにしました。これは、各ビューアにタスクバーアイコンがあることを意味します。
先週彼らに最新バージョンがリリースされたとき、彼らからの圧倒的な反応は彼らがそれを愛しているということです。これは、システムに対する最近の最も人気のある拡張機能の1つです。
したがって、先に進んで、ユーザーが望んでいることは悪いことをユーザーに伝えますが、最終的には何のメリットもありません。
いくつかの注意:
ModalityType
ブールmodal
引数ではなくnew引数を使用するコンストラクターを使用します。これが、これらのダイアログにタスクバーアイコンを与えるものです。jInternalFrameをメインフレームにし、非表示にします。その後、それをさらなるイベントに使用できます。
jInternalFrame.setSize(300,150);
jInternalFrame.setVisible(true);
前回スイングに触れてからしばらく経ちましたが、一般的には悪い習慣です。頭に浮かぶ主な欠点のいくつか:
それはより高価です: DialogやJInternalFrameなどの他の種類のウィンドウコンテナよりもはるかに多くのリソースを割り当ててJFrameを描画する必要があります。
ユーザーフレンドリーではない:くっついているJFrameの束に移動するのは簡単ではありません。アプリケーションは一貫性がなく、設計が不十分な一連のアプリケーションのように見えます。
JInternalFrameの使い方は簡単ですこれは一種のレトリカルですが、デスクトップとJInternalFrameのパターンですでに考えているよりもはるかに簡単で、他の人は賢く(または空き時間があります)、使用することをお勧めします。
間違いなく悪い習慣。理由の1つは、すべてにJFrame
新しいタスクバーアイコンが表示されるため、「ユーザーフレンドリー」ではないことです。複数JFrame
のを制御すると、髪の毛がはぎ取られます。
個人的には、JFrame
あなたの種類のアプリケーションにはONEを使用します。複数のものを表示する方法はあなた次第です、たくさんあります。Canvas
ES、 、JInternalFrame
、CardLayout
でもJPanel
多分ね。
複数のJFrameオブジェクト=痛み、問題、および問題。
複数Jframe
のを使用するのは良い考えではないと思います。
代わりに、同じでJPanel
複数のsを使用できます。JPanel
JFrame
また、これを切り替えることができJPanel
ます。そのため、内のものよりも多くを表示する自由が得られますJFrame
。
それぞれJPanel
について異なるものをデザインすることができ、これらすべてをJPanel
一度にJFrame
1つずつ表示することができます。
この切り替えるにはJPanel
Sを使用JMenuBar
してJMenuItems
それぞれのJPanel
か「のJButton for each
JPanel`。
複数あるのJFrame
は良い習慣ではありませんが、複数必要な場合でも問題はありませんJFrame
。
ただし、JFrame
複数JFrame
のを使用するよりも、さまざまなニーズに合わせて1つを変更することをお勧めします。
フレームが同じサイズになる場合は、フレームを作成して、代わりにフレームを参照として渡します。
フレームを通過したら、フレームにデータを入力する方法を決定できます。それは、一連の数字の平均を計算する方法を持っているようなものです。メソッドを何度も作成しますか?
これは良い習慣ではありませんが、使用したい場合でも、シングルトンパターンを使用することができます。私は私のプロジェクトのほとんどでシングルトンパターンを使用してきました。
Reba McEntire が息子の Shelby Blackstock と共有しているクリスマスの伝統について学びましょう。
メーガン・マークルとマライア・キャリーが自然な髪の上でどのように結合したかについて、メーガンの「アーキタイプ」ポッドキャストのエピソードで学びましょう.
ハリー王子が家族、特にチャールズ王とウィリアム王子との関係について望んでいると主張したある情報源を発見してください。
ワイノナ・ジャッドが、母親のナオミ・ジャッドが亡くなってから初めての感謝祭のお祝いを主催しているときに、彼女が今では家長であることをどのように認識したかを学びましょう.
Air travel is far more than getting from point A to point B safely. How much do you know about the million little details that go into flying on airplanes?
The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!
ランボルギーニの創設者であるフェルッチオランボルギーニが100歳になるのは毎日ではありません(そうです、彼は死んでいて、まだ死んでいると思います。
Appleが自動車分野に参入するという噂はかなり前から渦巻いており、AppleウォッチャーがSixtyEight Researchという会社がAppleの自動車研究開発のシェル会社である可能性が高いと判断したとき、その渦巻きは本当に渦巻いた。また、会社が購入した車は1台だけであることが知られており、その車はAppleが何を考えているかについての手がかりでいっぱいになる可能性があることも伝えています。
太陽系の外側にある架空の大きな物体である惑星Xの探索は、何十年にもわたって人間を魅了してきました。その検索の最新の章は、地球の10倍の大きさで、公転周期が15であるほど遠くにある惑星を指しています。
カムニュートンは昨日、簡単な265ヤードと3回のタッチダウンでファルコンズを引き裂き、別の素晴らしいゲームをしました。その日のハイライトは、上のタッチダウンスローでした。これは、視聴するたびにばかげているだけです。
ロシアのフィギュアスケーター、カミラ・バリエバが関与したドーピング事件が整理されているため、チームは2022年北京冬季オリンピックで獲得したメダルを待っています。
何千人ものAmazonの買い物客がMulberry Silk Pillowcaseを推奨しており、現在販売中. シルクの枕カバーにはいくつかの色があり、髪を柔らかく肌を透明に保ちます。Amazonで最大46%オフになっている間にシルクの枕カバーを購入してください
ラファイエット警察署は、「不審な男性が女性に近づいた」という複数の苦情を受けて、12 月にパデュー大学の教授の捜査を開始しました。
私たちの周りの世界と同じように、言語は常に変化しています。以前の時代では、言語の変化は数年または数十年にわたって発生していましたが、現在では数日または数時間で変化する可能性があります。
認知症を患っている 91 歳のアジア人女性が最近、47 番街のアウター サンセット地区でロメオ ロレンゾ パーハムに襲われました。伝えられるところによると、被害者はサンフランシスコの通りを歩いていたところ、容疑者に近づき、攻撃を受け、暴行を受けました。
“And a river went out of Eden to water the garden, and from thence it was parted and became into four heads” Genesis 2:10. ? The heart is located in the middle of the thoracic cavity, pointing eastward.
人々にチャンスを与えることは、人生で少し遅すぎると私は信じています。寛大に。