Java初心者の質問です。
こちらのサイト ( https://www.javadrive.jp/tutorial/timer/index1.html https://www.javadrive.jp/tutorial/event/index2.html ) を参考にタイマーが5から順にカウントダウンしていき、-1になった瞬間に"GameOver"と"Score"を表示するようにして(Game.java, GameOver.java)、次のステップとしてゲームオーバー画面にJButtonでボタンを2つ実装(クリックするとプログラム終了するボタンともう一度Game.javaを実行するボタン)したいのですが、既存のプログラムに対してどのようにJButtonを実装すればよいかわからずに困っております)
以下、ソースコードです。
(Game.javaを実行し、Game.java内でGameOver.javaを呼び出しています)
----------Game.java---------------
import java.awt.CardLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
public class Game extends JFrame {
private Timer timer; private int countdown_sec = 5; private CardLayout card = new CardLayout(0, 0); public static void main(String[] args) { SwingUtilities.invokeLater(() -> { Game frame = new Game(); frame.setBounds(10, 10, 800, 800); frame.setVisible(true); }); } Game() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("CountDown画面"); setLayout(card); JPanel labelPanel = new JPanel(); JLabel label = new JLabel(); labelPanel.add(label); add(labelPanel, "title_window"); timer = new Timer(1000, (e) -> { label.setText(String.valueOf(countdown_sec)); if (countdown_sec ==-1){ timer.stop(); showPanel("gameover_window"); return; } countdown_sec--; }); JPanel game_over = new GameOver(); add(game_over, "gameover_window"); timer.start(); } public void showPanel(String name) { card.show(getContentPane(), name); }
}
----------GameOver.java-------------
import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import java.awt.Color;
public class GameOver extends JPanel {
public GameOver() { //背景を黄色にする。 setBackground(Color.YELLOW); setLayout(new BorderLayout(0, 0)); JLabel lblGameOver = new JLabel("GameOver"); // 文字色を赤色にする。 lblGameOver.setForeground(Color.RED); lblGameOver.setVerticalAlignment(SwingConstants.TOP); lblGameOver.setHorizontalAlignment(SwingConstants.CENTER); add(lblGameOver, BorderLayout.NORTH); JLabel lblScore = new JLabel("Score"); lblScore.setForeground(Color.RED); lblScore.setHorizontalAlignment(SwingConstants.CENTER); add(lblScore);
//JButtonをここで2つ実装したい
}
}
-----------上記のGameOver.javaファイルに実装したい内容(2つのボタンの実装)-----------
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.Container;
import java.awt.BorderLayout;
class SSample1_1 extends JFrame{
public static void main(String args[]){
SSample1_1 frame = new SSample1_1("タイトル");
frame.setVisible(true);
}
SSample1_1(String title){
setTitle(title);
setBounds(100, 100, 300, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p = new JPanel(); JButton button1 = new JButton("リトライ");//クリックするとGame.javaをもう一度実行するようにしたい JButton button2 = new JButton("終了");//クリックすると強制終了するようにしたい p.add(button1); p.add(button2); Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER);
}
}
制作環境はeclipseを使用しております。
どなたかご教授お願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。