Javaの小さなゲーム用のメニュウを作成しようとしています。私はWindowクラス(JFrameを拡張する)を持って、別のScreens(Menue、Game、GameOverなど)用にJPanelを置くことをお勧めします。 JFrameにボタンやものを直接置くと私はJPanelをJFrameに入れようとすると動作しません。ここでは、コードは次のとおりです。jframeでjpanelを表示する方法
public class Window extends JFrame{
private final int WIDTH = 800;
private final int HEIGTH = 600;
private final int QUADRAT = 50;
JButton startButton;
JButton exitButton;
JButton anleitungButton;
JLabel gameTitle;
public Window() {
super("Study Run");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
setSize(WIDTH, HEIGTH);
setResizable(false);
getContentPane().add(new MenuePanel());
setVisible(true);
setLocationRelativeTo(null);
}
そして、これは私のパネルです:
public class MenuePanel extends JPanel{
JButton startButton;
JButton exitButton;
JButton anleitungButton;
JLabel gameTitle;
public MenuePanel() {
super();
setBackground(Color.CYAN);
gameTitle = new JLabel("StudyRun", SwingConstants.CENTER);
gameTitle.setBounds(200, 25, 400, 75);
gameTitle.setFont(new Font("Arial", Font.ITALIC, 36));
add(gameTitle);
startButton = new JButton("start");
startButton.setBounds(325, 125, 150, 50);
add(startButton);
anleitungButton = new JButton("anleitung");
anleitungButton.setBounds(325, 200, 150, 50);
add(anleitungButton);
exitButton = new JButton("exit");
exitButton.setBounds(325, 450, 150, 50);
add(exitButton);
CloseListener closeListener = new CloseListener();
StartListener startListener = new StartListener();
AnleitungListener anleitungListener = new AnleitungListener();
startButton.addActionListener(startListener);
anleitungButton.addActionListener(anleitungListener);
exitButton.addActionListener(closeListener);
}
私はオンラインを見つけた唯一の助けは、私が目に見えるフレームを設定する前に、私は、パネルを追加するために必要なことでした。それはうまくいかなかった。 pack()またはrevalidate()をコードのどこに置いても機能しませんでした。パネルを不透明または可視に設定しても、何もしませんでした。他に何を試していいのか分かりませんか?
はどうもありがとうございました
} ..のJFrameに追加します。私はいくつかの異なるスクリーンタイプを持っているので、BorderLayoutは最高でしょうか?私のmenueは真ん中に3つの縦に並んだボタンを持っています、ゲームはちょうどゲームパネルですgameoverscreenは中央に下部とテキストのボタンがありますか? – N00bine
@ N00bine:ワンサイズのレイアウトはありません。通常、単純に複雑なレイアウトを実現するために、それぞれ独自のレイアウトマネージャを使用するJPanelをネストします。チュートリアルを勉強してください。 –
@ N00bine:時間の90%でも、私のメイン* JPanelはBorderLayoutを使用します。 –