1

私はJavaを初めて使用します。スイングベースのUIを作成しています。2つのフレームを作成しました。各フレームは、同じパッケージ内の別々の.javaファイルにあります。

これらの2つのフレームは、アプリケーションの2つの画面(パネル)を表します。最初のフレームの[次へ]ボタンをクリックすると、2番目のフレームに移動します。

確認したところ、この2つのクラスにはmainメソッドがあり、アプリケーションを作成するための正しい方法だと思います。主な方法は1つだけです。

[次へ]をクリックすると、最初のフレームのメインパネルにsetVisible(false)を、2番目のフレームのメインパネルにsetVisible(true)を作成しようとしています。ただし、クラス内のパネルはプライベートであるため、これを行うことはできません。上記の問題の解決策はありますか?

私は初心者ですが、この種のアプリケーションを起動する方法を誰かに教えてもらえますか?従う必要のあるガイドラインは何ですか?そして、そのようなアプリケーションの開発を開始することに関連するドキュメントを見つけるのを手伝ってください。

答えを読んだ後、私のコメントは次のとおりです。

次のコードを使用して最初のパネルから次のパネルに移動しましたが、機能しませんでした。

private void gotoNextPanel(){
//    jPanelFirstScreen.setVisible(false);
      JPanelSecondScreen jpanelSecondScreen= new JPanelSecondScreen();
      jpanelSecondScreen.setVisible(true);
      UpgradeUtilityGUI upgradeUtilityGUI = new UpgradeUtilityGUI();
      upgradeUtilityGUI.removeAll();
      validate();
      repaint();
//      upgradeUtilityGUI.add(jpanelSecondScreen);
            upgradeUtilityGUI.getContentPane().add(jpanelSecondScreen, "card2");
      jpanelSecondScreen.setVisible(true);
      validate();
      repaint();

    }

私はnetbeansを使用しており、フレームのカードレイアウトに2つのパネルを追加しました。上記のコードを使用してパネルを変更すると、何も起こらず、最初のパネルがまだ表示されています。両方のパネルがjFrameのcardlayoutに追加されたときに、あるパネルから別のパネルに移動するためのコードを作成する方法を教えてもらえますか?

4

4 に答える 4

4

他の人が言及しているように、ここ (および1つのフレーム)に示されているように、 CardLayoutを使用します。

ゲームビュー ハイスコ​​アビュー

[次へ]をクリックすると、最初のフレームのメインパネルにsetVisible(false)を、2番目のフレームのメインパネルにsetVisible(true)を作成しようとしています。ただし、クラス内のパネルはプライベートであるため、これを行うことはできません。上記の問題の解決策はありますか?

パネルをpublicアクセスレベルにすると、他のパッケージから利用できるようになります。


そのコードスニペットの1つの問題は、次の行によって示されます。

UpgradeUtilityGUI upgradeUtilityGUI = new UpgradeUtilityGUI();  

コンテナに追加される前にスコープ外になります。また、レイアウトに新しいカードを追加するときに何も削除する必要はなく、を呼び出す必要もありませんrepaint()

于 2012-04-07T10:22:08.120 に答える
2

アプリケーションが2つのパネルしかないほど単純な場合は、2つのJFrameを作成しないでください。2つのJPanelを使用してJFrameを作成する必要があります。各JPanelには、必要な情報が含まれています。最初のパネルの準備ができたら、そのパネルでsetVisible(false)を呼び出し、2番目のフレームでsetVisible(true)を呼び出すことができます。これは、最も理解しやすいソリューションの1つです。
しかし、それがあなたにとって良いのか、それとももっと詳細な解決策を使いたいのかはあなた次第です。

于 2012-04-07T10:03:43.383 に答える
1

あなたがすべきことは、アプリケーション用のシングルを用意し、画面間を移動したいJFrameときに追加および削除することです。JPanels

JPanels基本的に、それぞれに次のものが必要です... 1. JButton「次へ」と呼ばれるA2.ButtonListener各ボタンのAでJFrame、panel2、panel3などをロードするように指示します。

の一部として、ButtonListener基本的にJFrame.removeAll()は、既存のパネルを削除してJFrame.add(JPanel)から次のパネルを追加するなどの呼び出しを行います。

1JFrameを使用すると、メソッドも1つだけになりますmain()

于 2012-04-07T10:05:04.243 に答える
1

2つ以上を使用しないでくださいJFrames。また、分離してコンパイルした場合もJar files、これは地獄への道です。CardLayoutを確認することをお勧めします。

于 2012-04-07T10:16:38.767 に答える