複数の画面があるプログラムを作成していることに常に気づきます。たとえば、初期レイアウトに 2 つのボタン (ファイルの作成またはファイルの編集) があるプログラムを考えてみましょう。いずれかをクリックすると、ユーザーが押したボタンをサポートする新しい画面に移動します。次に戻るボタンをクリックすると、プログラムのメイン画面に戻ります。このような個別のメニューをどのように行うのが最善か疑問に思っています。各画面を設定する個別のメソッドを作成し、ボタン (「戻る」ボタンなど) がクリックされたときに適切なメソッドを呼び出すのが最善でしょうか? と思っていたのですが、いろいろな方法があるので、表示される画面を変更するより良い方法がないか意見を求めたいと思います。ありがとう、AJ
3 に答える
元の質問に対する2番目のコメントに基づいて、パネルの使用を検討するのが最善だと思います。
必要なアクティビティごとに複数のパネルを使用することを検討してください。
JPanel firstPanel = new JPanel();
JPanel secondPanel = new JPanel();
JPanel thirdPanel = new JPanel();
初期化時にすべてのパネルが非表示になっていることを確認してから、次を使用してボタンクリックイベントでパネルを別のパネルに交換します。
firstPanel.hide();
secondPanel.show();
使用するレイアウトによっては、他のテクニックもあります。たとえば、BorderLayout を使用する場合は、削除して追加する (または複数のパネルを表示および非表示にする) のではなく、BorderLayout 領域を別のパネルに単純に「置き換え」てから再検証できます。
container.add(BorderLayout.CENTER, thirdPanel);
container.validate();
また、オペレーティング システム (Windows、Mac など) が異なれば、準拠したいスタイルも異なることに注意してください。たとえば、典型的な Windows インストーラーについて言及しました。人々は、インストーラーが特定の方法で見た目と動作をすることを期待するようになりましたが、別の OS では、まったく異なる期待と外観のセットがあります。
参考文献:
編集:
このような個別のメニューをどのように行うのが最善か疑問に思っています。各画面を設定する個別のメソッドを作成し、ボタン (「戻る」ボタンなど) がクリックされたときに適切なメソッドを呼び出すのが最善でしょうか?
これは個人的な好みに帰着します。起動時にすべてを初期化し、パネル間 (または「スクリーン」と呼んでいるように) をすばやく交換したいですか、それとも、初期起動を高速化し、必要に応じて各コンポーネントの「遅延読み込み」を本質的に行いたいですか? .
個人的には、初期化中にすべてを選択します (アプリケーションの起動時に実行またはロードすることがたくさんある場合を除きます)。これは本当に個人的な好みに帰着します。
別の編集: レイアウトについて言えば、おそらく別のレイアウト スタイルも役立つでしょう。
これが多少役立つことを願っています。
Actions フレームワークを見てみましょう。これは、再利用のために共通レベルのアクションを開発する優れた方法です。
画面の状態が前の画面の状態に依存する場合 (ウィザードのように)、この記事で説明されている手順に従うことができます。