Jframe, JPanelについて調べています。
下記イメージのような認識でしたが、実際に触ってみて思っていたのと違う動作をしているので教えてください。
[イメージ]
よくあるゲームのタイトル画面を再現してみようと思いましたが、うまくいきませんでした。
public class TestFrame extends JFrame{ private ImageIcon imageIcon; public TestFrame (ImageIcon imageIcon){ this.imageIcon = imageIcon; //フレームの大きさ設定 super.setBounds(0,0,500,500); //ウィンドウの「×」ボタンで終了するように設定 super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 自動レイアウト機能の無効化 setLayout(null); // 背景パネルの作成 JPanel panelBackGround = new JPanel(); // 背景パネルのサイズ設定 panelBackGround.setSize(new Dimension(500, 500)); // 背景パネルの表示位置設定 panelBackGround.setLocation( new Point( 0,0 )); // 背景画像表示用のラベル作成 JLabel labelBackGround = new JLabel(); // ラベルに背景画像設定 labelBackGround.setIcon(this.imageIcon); // 背景パネルにラベルを追加 panelBackGround.add(labelBackGround); // 「最初から」ボタンの作成 JButton newButton = new JButton("最初から"); // 「最初から」ボタンのサイズ設定 newButton.setPreferredSize(new Dimension(100, 50)); // 「最初から」の表示位置設定 newButton.setLocation(0, 0); // 「最初から」パネルの作成 JPanel panelNewButton = new JPanel(); // 「最初から」パネルのサイズ設定 panelNewButton.setSize(100,50); // 「最初から」パネルの表示位置設定 panelNewButton.setLocation( new Point( 200, 300 )); // 「最初から」パネルにボタンを追加 panelNewButton.add(newButton); // 「続きから」ボタンの作成 JButton continueButton = new JButton("続きから"); // 「続きから」ボタンのサイズ設定 continueButton.setPreferredSize(new Dimension(100, 50)); // 「続きから」の表示位置設定 continueButton.setLocation(0, 0); // 「続きから」パネルの作成 JPanel panelContinueButton = new JPanel(); // 「続きから」パネルのサイズ設定 panelContinueButton.setSize(100,50); // 「続きから」パネルの表示位置設定 panelContinueButton.setLocation( new Point( 200, 380 )); // 「続きから」パネルにボタンを追加 panelContinueButton.add(continueButton); Container contentPane = getContentPane(); contentPane.add(panelBackGround); // 背景 contentPane.add(panelNewButton); // 「最初から」ボタン contentPane.add(panelContinueButton);// 「続きから」ボタン this.setSize(500,500); this.setLocationRelativeTo(null); //フレームを表示 super.setVisible(true); } } public class TestMain{ private static TestFrame testFrame; public static void main(String[] args){ ImageIcon imageIcon = new ImageIcon("bg.png"); testFrame = new TestFrame(imageIcon); } }
上記の実行結果が「最初から」ボタンしか表示されず、パネルとボタンのサイズを同じにしているのですが、若干ボタンの下が切れてしまっています。
また、Containerにaddする順番を
contentPane.add(panelNewButton); // 「最初から」ボタン contentPane.add(panelContinueButton);// 「続きから」ボタン contentPane.add(panelBackGround); // 背景
に変えた所、ボタン2つが表示されるようになりますがコンテナ部分がはみ出して見えてしまっていて、ボタン下部が切れてしまっています。
そもそも背景を最後にaddしてしまうとボタンが隠れてしまうのでは?と質問文先頭のイメージと食い違いがあります。
綺麗に背景の上に2つのボタンを表示させるためにはどこをどのように修正すればいいですか?
いろいろなサイトを調べて所々コードの追記をしていた為おかしい所があるかもしれませんが、合わせてご指摘よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/18 05:18