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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C++でfriendクラスにしているの...
-
継承したクラス側のクラス名の取得
-
javaの配列について質問です。
-
関数内の変数に<summary>コメン...
-
C# インターフェイスの実装
-
型Containerのメソッドadd(S...
-
範囲外の数値を代入したらエラ...
-
ひとつのファイルにクラスは1つ?
-
c++,ある関数のクラスから別の...
-
C#にて別クラスの関数を使いたい
-
通常関数とメンバー関数のやり...
-
エクセルVBAで、条件に一致する...
-
パワーポイントのVBAでテキスト...
-
private static という変数の修飾
-
変数名の付け方
-
「タイプ初期化子が例外をスロ...
-
objective-cで分かりにくい所教...
-
VB.netで、シリアル通信のタイ...
-
final修飾子を使っているのに、...
-
Java初級 引数に適用できません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数内の変数に<summary>コメン...
-
クラス間でのデータ参照
-
C#にて別クラスの関数を使いたい
-
import と extends について
-
c++,ある関数のクラスから別の...
-
C++でfriendクラスにしているの...
-
Java リフレクションについて
-
構造 他のクラスの構造体を別...
-
C#のクラスライブラリでメッセ...
-
無名パッケージからのインポート
-
親クラスから子クラスへアクセス。
-
Java
-
C# インターフェイスの実装
-
Tomcatのpropertiesファイルの...
-
C# log4netの使い方
-
ひとつのファイルにクラスは1つ?
-
dllエクスポート時のdeclspec(d...
-
a href="..." とServlet
-
実行可能jarファイルのファイル...
-
C#でほかのファイルにある自作...
おすすめ情報
start Panelです。
mainパネルになります
Person クラスです
PanelChangeに引数としてPerson pを渡せるように書いて、startPanelで入力と同時に作成したPersonのインスタンスを渡しています。
そのpをPanelChangeのメソッド内で他のパネルのメソッドであるsetterpersonで設定しという流れで現在は値の渡しをしようとしています。