4

なんらかのアクションで画面が変化するが、プログラムは 1 つのウィンドウで完全に動作するユーザー インターフェイスをどのように設計するかということです。つまり、ウェブサイトをナビゲートするのと同じ概念だと思います。たとえば、すべてが同じウィンドウ (Web ブラウザー) で行われますが、アクション (ボタンのクリック、リンクのクリックなど) ごとに画面の内容が変わります。 )。

Java API を調べたところ、CardLayoutクラスが見つかりました。私は正しい方向に向かっていますか、それとももっと簡単な方法がありますか? (このページCardLayoutはやや複雑であり、すべてを手動でコーディングすることをいとわない人に推奨されます)。

validate()repaint()メソッドがあることは知っていますがJFrame、これはそれらの正しい使い方ではないかもしれません。私はもはや初心者ではありませんが、まだ非常に経験豊富でもありませんので、ご容赦ください。

どんなガイダンスも役に立ちます。どうもありがとう。

4

4 に答える 4

4

はい、Cardlayoutを使用してスイッチ アウト"Cards"、つまり画面に表示されるさまざまなパネルを切り替えることができます。

JPanelsで直接切り替えることもできます

jframe.getContentPane().remove(...); // Remove old panel from layout
jframe.getContentPane().add(...);
jframe.validate();
jframe.repaint()

レイアウトが異なれば動作も異なるため、常に機能する単一のソリューションはありません。さまざまな LayoutManager のドキュメントを参照して、それらがどのように機能するかを確認してください。

于 2013-08-02T07:44:34.940 に答える
2

TabbedPaneを使用してタブを非表示にし、アプリケーションからプログラムで切り替えることができます。

そうすれば(たとえばテスト目的で)、タブを簡単に有効にして、いつでも各タブの状態を確認できます。

しかし、ええ、CardLayout(一般的に)良い方法です。

にパネルを手動で追加および削除したくなるかもしれませんJFrame。レンダリングの問題が発生する可能性があり、コードがより複雑になる可能性があります。その上、それを行うための専用クラスがすでにあるので、車輪を再発明する代わりにそれらを使用する必要があります。

于 2013-08-02T07:51:06.613 に答える
0

すべての画面を 1 つの JPanel として設計します (JPanel に画面コンポーネントを追加します)。必要な画面がわかっている場合は、 を使用しますJFrame.setContentPane(Container contentPane)。これにより、メニュー以外の JFrame のすべてが置き換えられます。ページの一部を同じままにする必要がある場合は、contentPane でレイアウトを使用し、画面をレイアウトの一部にのみ設定する必要があります (レイアウトによって異なります。ここでレイアウトの詳細を参照してください) 。

于 2013-08-02T07:55:19.083 に答える
0

個人的には、JFrame のすべてのコンポーネントを削除します。そんな感じ:

myFrame.getContentPane().removeAll();

次に、まったく新しいコンテンツ ペインを追加し、フレームを再描画して再検証します。

于 2013-08-02T07:48:18.863 に答える