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で質問しましょう!
似たような質問が見つかりました
- 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ランキング
-
クラス間でのデータ参照
-
関数内の変数に<summary>コメン...
-
Java リフレクションについて
-
範囲外の数値を代入したらエラ...
-
visual studioのデザイナ画面で...
-
C++でfriendクラスにしているの...
-
c++,ある関数のクラスから別の...
-
JSPでbeanプロパティ(配列)を...
-
アップキャスト、ダウンキャス...
-
explicitの定義は?
-
ひとつのファイルにクラスは1つ?
-
Java
-
C#で処理中の状況をStatusLabel...
-
VisualC++でクラスのヘッダーフ...
-
構造 他のクラスの構造体を別...
-
親クラスから子クラスへアクセス。
-
プログラムの変数名にするとど...
-
スーパークラスのコンストラク...
-
継承したクラス側のクラス名の取得
-
javaの配列について質問です。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数内の変数に<summary>コメン...
-
C#にて別クラスの関数を使いたい
-
c++,ある関数のクラスから別の...
-
親クラスから子クラスへアクセス。
-
C#でほかのファイルにある自作...
-
クラス間でのデータ参照
-
構造 他のクラスの構造体を別...
-
範囲外の数値を代入したらエラ...
-
ひとつのファイルにクラスは1つ?
-
C++でfriendクラスにしているの...
-
Java リフレクションについて
-
継承したクラス側のクラス名の取得
-
C# インターフェイスの実装
-
java-別クラスの変数の使い方を...
-
C#のクラスライブラリでメッセ...
-
visual studioのデザイナ画面で...
-
C# log4netの使い方
-
a href="..." とServlet
-
アップキャスト、ダウンキャス...
-
オブジェクトのデータをもとにX...
おすすめ情報
start Panelです。
mainパネルになります
Person クラスです
PanelChangeに引数としてPerson pを渡せるように書いて、startPanelで入力と同時に作成したPersonのインスタンスを渡しています。
そのpをPanelChangeのメソッド内で他のパネルのメソッドであるsetterpersonで設定しという流れで現在は値の渡しをしようとしています。