![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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);
}
}
}
![「Javaでswingの画面変わる際に他の」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/5/542513322_58df2db6c2df5/M.png)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Ruby vscode 文字化け 1 2022/05/21 19:17
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数内の変数に<summary>コメン...
-
C#にて別クラスの関数を使いたい
-
内部クラスのスコープについて。
-
ひとつのファイルにクラスは1つ?
-
クラス間でのデータ参照
-
C#のクラスライブラリでメッセ...
-
C++ シングルトン マルチスレッド
-
a href="..." とServlet
-
C#でほかのファイルにある自作...
-
C# インターフェイスの実装
-
正常にビルドされたのに起動さ...
-
Java リフレクションについて
-
リレーションエンティティクラ...
-
「タイプ初期化子が例外をスロ...
-
エクセルVBAで、条件に一致する...
-
C#で設定時刻到来時にイベント...
-
インスタンス参照でアクセスで...
-
VB.NET getとsetの概念がわかり...
-
DataGridViewでセルクリックイ...
-
変数名の付け方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クラス間でのデータ参照
-
関数内の変数に<summary>コメン...
-
c++,ある関数のクラスから別の...
-
範囲外の数値を代入したらエラ...
-
C#にて別クラスの関数を使いたい
-
無名パッケージからのインポート
-
java-別クラスの変数の使い方を...
-
SwingでgetContentPaneのエラー...
-
C++でfriendクラスにしているの...
-
C#でほかのファイルにある自作...
-
Java リフレクションについて
-
Java
-
import と extends について
-
C#のクラスライブラリでメッセ...
-
a href="..." とServlet
-
ひとつのファイルにクラスは1つ?
-
構造 他のクラスの構造体を別...
-
親クラスから子クラスへアクセス。
-
内部クラスのインスタンスを外...
-
visual studioのデザイナ画面で...
おすすめ情報
start Panelです。
mainパネルになります
Person クラスです
PanelChangeに引数としてPerson pを渡せるように書いて、startPanelで入力と同時に作成したPersonのインスタンスを渡しています。
そのpをPanelChangeのメソッド内で他のパネルのメソッドであるsetterpersonで設定しという流れで現在は値の渡しをしようとしています。