
Javaでswingを使って小さなアプリを作っています。
今やりたいのはパネルstart で名前入力 → mainパネル その名前でようこそと表示 の流れをまず作ろうとしているのですが、名前がどうしても渡せず、
今回setterPersonというメソッドで人クラスを代入しなおしているのですが、コード上で
System.out.println(main.gettererPerson());
main.setterPerson(p);
main.gettererPerson();
main.setVisible(true);
書いて試しに実行したら
入力前の値
入力後の値
がしっかりコンソールで表示されている。のにもかかわらずmain.setVisible(true);を実行すると
表示画面には入力前の値の名前が表示されていて、値が渡ってないということです。
どなたか何故このmain.setVisible(true);では値が渡らなかったのか教えていただけると幸いです。
また、今回Javaを勉強するために始めたのですが、swingは私が作りたいアプリ(今回は人クラス、服クラス、店クラス、でファッションをきせかえさせるというアイディアでした。)には向いてないように思いました。どなたかより良い言語かやり方を知っていいたら教えていただきたいです。
問題のコード↓
これはパネルを管理するクラスです。
package fashiongui;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Fashionbattle extends JFrame {
public String[] PanelNames = {"start","main","hat","afterbought"};
StartPanel start = new StartPanel(this,PanelNames[0]);
MainPanel main = new MainPanel(this,PanelNames[1]);
HatShopPanel hat = new HatShopPanel(this,PanelNames[2]);
AfterBoughtPanel afterbought = new AfterBoughtPanel(this,PanelNames[3]);
Fashionbattle(String title){
this.add(start);start.setVisible(true);
this.add(main);main.setVisible(false);
this.add(hat);hat.setVisible(false);
this.add(afterbought);afterbought.setVisible(false);
this.setBounds(100, 100, 1000, 700);
}
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
Fashionbattle frame = new Fashionbattle("Fashion Battle");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public void PanelChange(JPanel jp, String str,Person p){
System.out.println(jp.getName());
String name = jp.getName();
if(name==PanelNames[0]){
start = (StartPanel)jp;
start.setVisible(false);
}else if(name==PanelNames[1]){
main = (MainPanel)jp;
main.setVisible(false);
}else if(name==PanelNames[2]){
hat = (HatShopPanel)jp;
hat.setVisible(false);
}else if(name==PanelNames[3]){
afterbought = (AfterBoughtPanel)jp;
afterbought.setVisible(false);
}
if(str==PanelNames[0]){
start.setVisible(true);
}else if(str==PanelNames[1]){
System.out.println(main.gettererPerson());
main.setterPerson(p);
main.gettererPerson();
main.setVisible(true);
}else if(str==PanelNames[2]){
hat.setterPerson(p);
hat.setVisible(true);
}else if(str==PanelNames[3]){
afterbought.setterPerson(p);
afterbought.setVisible(true);
}
}
}

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
a href="..." とServlet
-
Java リフレクションについて
-
無名パッケージからのインポート
-
C#にて別クラスの関数を使いたい
-
(クラス名.this.メソッド)って...
-
クラス間でのデータ参照
-
C#のクラスライブラリでメッセ...
-
継承したクラス側のクラス名の取得
-
c++,ある関数のクラスから別の...
-
関数内の変数に<summary>コメン...
-
ネストしたenumへのリフレクシ...
-
C++でfriendクラスにしているの...
-
ASP Pageの孫継承のPage_Load
-
構造 他のクラスの構造体を別...
-
【ASP.NET MVC3】共通ビュークラス
-
C# 定数定義
-
C++ シングルトン マルチスレッド
-
リフレクション
-
java-別クラスの変数の使い方を...
-
FilterReader クラスのカスタム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クラス間でのデータ参照
-
関数内の変数に<summary>コメン...
-
javaでメインクラスが見つから...
-
範囲外の数値を代入したらエラ...
-
C#にて別クラスの関数を使いたい
-
a href="..." とServlet
-
無名パッケージからのインポート
-
visual studioのデザイナ画面で...
-
import と extends について
-
Java リフレクションについて
-
C#のクラスライブラリでメッセ...
-
C# インターフェイスの実装
-
親クラスから子クラスへアクセス。
-
c++,ある関数のクラスから別の...
-
Java
-
構造 他のクラスの構造体を別...
-
C++で親クラスの関数を呼び出す...
-
C++でfriendクラスにしているの...
-
java-別クラスの変数の使い方を...
-
下記のコードを実行すると、Mai...
おすすめ情報
start Panelです。
mainパネルになります
Person クラスです
PanelChangeに引数としてPerson pを渡せるように書いて、startPanelで入力と同時に作成したPersonのインスタンスを渡しています。
そのpをPanelChangeのメソッド内で他のパネルのメソッドであるsetterpersonで設定しという流れで現在は値の渡しをしようとしています。