質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

Q&A

解決済

1回答

5645閲覧

JFrameにaddしたJPanelが表示されない

Kay_T

総合スコア1

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

0グッド

0クリップ

投稿2020/05/06 10:37

前提・実現したいこと

画面ごとにクラスを分けたJPanelを切り替える設計でゲームを作成したい。
現在ゲームのタイトル画面の実装段階で、プロジェクトに適宜パッケージフォルダを作成してクラスファイルを配置しています。

発生している問題・エラーメッセージ

ボタンなどを配置したJPanelをJFrameにaddしてもJPanelの内容が表示されません。JFrameは設定したウインドサイズでタイトルの表示だけはされています。どういった理由でうまくいっていないのかがまったく見当がついていない状態です。

該当のソースコード

Java

1package main; 2 3import frame.GameWindow; 4import panels.GameTitlePanel; 5 6public class GameMain{ 7 8 public static void main(String[] args) { 9 GameWindow gw = new GameWindow("Title",1000,700); 10 GameTitlePanel gp = new GameTitlePanel(); 11 gw.getContentPane().add(gp); 12 gp.setVisible(true); 13 } 14}

Java

1package panels; 2import java.awt.Color; 3import java.awt.Font; 4import java.awt.SystemColor; 5 6import javax.swing.ButtonGroup; 7import javax.swing.JButton; 8import javax.swing.JPanel; 9import javax.swing.JRadioButton; 10 11public class GameTitlePanel extends JPanel { 12 13 JRadioButton rb1; 14 JRadioButton rb2; 15 JRadioButton rb3; 16 JRadioButton rb4; 17 JButton b1; 18 JButton bb; 19 ButtonGroup group; 20 21 public GameTitlePanel() { 22 Init(); 23 } 24 25 private void Init() { 26 27 group = new ButtonGroup(); 28 29 //ラジオボタン生成 30 rb1 = new JRadioButton("1"); 31 rb1.setForeground(SystemColor.WHITE); 32 rb1.setFont(new Font("Serif", Font.BOLD, 25)); 33 rb1.setBounds(365, 573, 110, 45); 34 rb1.setOpaque(false); 35 36 rb2 = new JRadioButton("2", true); 37 rb2.setForeground(SystemColor.WHITE); 38 rb2.setFont(new Font("Serif", Font.BOLD, 25)); 39 rb2.setBounds(440, 573, 110, 45); 40 rb2.setOpaque(false); 41 42 rb3 = new JRadioButton("3"); 43 rb3.setForeground(SystemColor.WHITE); 44 rb3.setFont(new Font("Serif", Font.BOLD, 25)); 45 rb3.setBounds(540, 573, 110, 45); 46 rb3.setOpaque(false); 47 48 rb4 = new JRadioButton("4"); 49 rb4.setForeground(SystemColor.WHITE); 50 rb4.setFont(new Font("Serif", Font.BOLD, 25)); 51 rb4.setBounds(615, 573, 110, 45); 52 rb4.setOpaque(false); 53 54 group.add(rb1); 55 group.add(rb2); 56 group.add(rb3); 57 group.add(rb4); 58 59 //ボタン生成 60 b1 = new JButton("start"); 61 b1.setFont(new Font("Serif", Font.BOLD, 50)); 62 b1.setForeground(Color.WHITE); 63 b1.setContentAreaFilled(false); 64 b1.setBorderPainted(false); 65 b1.setBounds(456, 487, 151, 80); 66 67 //panelにボタンを追加 68 add(rb1); 69 add(rb2); 70 add(rb3); 71 add(rb4); 72 add(b1); 73 } 74} 75

Java

1package frame; 2 3import javax.swing.JFrame; 4 5public class GameWindow extends JFrame{ 6 public GameWindow(String title, int width, int height) { 7 super(title); 8 setLayout(null); 9 setDefaultCloseOperation(EXIT_ON_CLOSE); 10 setBounds(0,0,width,height); 11 } 12} 13 14

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ngsvx

2020/05/06 10:49

パネル自体の位置やサイズが設定されないようになっていない? JFrameのレイアウトマネージャーがnullになっているし。
Kay_T

2020/05/06 10:53

ありがとうございます。解決しました。setLayoutの意味を取り違えていたのが原因でした。
guest

回答1

0

自己解決

質問への追記・修正の依頼のヒントにより解決いたしました。回答いただいていない状況で解決してしまったので返答いただいた方の評価ができませんが、大変ありがとうございました。今回初めての質問でしたのでシステム的なとこでまだ理解が不十分なとこがあると思いますが、もし対応方法がルール上良くない等ありましたらご教示願えたらと思います。

投稿2020/05/06 12:00

Kay_T

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問