前提・実現したいこと
画面ごとにクラスを分けた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
回答1件
あなたの回答
tips
プレビュー