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

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

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

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

Q&A

解決済

1回答

3174閲覧

Swing じゃんけんゲーム

daichanman123

総合スコア32

Java

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

0グッド

0クリップ

投稿2015/09/15 01:32

swingを用いてじゃんけんゲームを作っています。
以前質問させていただいたKeyEventはわかったのですが、それをプログラムになおすときにどのように繋げたらいいのかわかりません。

コード public class janken extends JFrame{ public static void main(String args[]){ janken frame = new janken("ジャンケンゲーム"); frame.setSize(1280, 1020); frame.setLocationRelativeTo(null); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public janken(String title){ setTitle(title); JPanel panel1 = new JPanel(); panel1.setLayout(new BorderLayout()); JLabel label1 = new JLabel("ジャンケンスタート", JLabel.CENTER); label1.setFont(new Font("MS ゴシック", Font.BOLD, 36)); panel1.add(label1); add(panel1); }

今「じゃんけんスタート」という文字を真ん中に出しているのですが、この画面からEnterキーを押してプレイヤー人数選択画面に切り替えたいと思っています。
その時に

コード public void keyPressed(KeyEvent evt) { if(evt.getKeyCode() == KeyEvent.VK_ENTER){ JPanel panel2 = new JPanel(); JLabel label2 = new JLabel("プレイヤー人数は?"); panel2.add(label2); add(panel2); }

プログラムは適当ですがこのようなプログラムを繋げても動きませんでした。

コード public class janken extends JFrame{ public static void main(String args[]){ janken frame = new janken("ジャンケンゲーム"); frame.setSize(1280, 1020); frame.setLocationRelativeTo(null); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public janken(String title){ setTitle(title); JPanel panel1 = new JPanel(); panel1.setLayout(new BorderLayout()); JLabel label1 = new JLabel("ジャンケンスタート", JLabel.CENTER); label1.setFont(new Font("MS ゴシック", Font.BOLD, 36)); panel1.add(label1); add(panel1); } public void keyPressed(KeyEvent evt) { if(evt.getKeyCode() == KeyEvent.VK_ENTER){ JPanel panel2 = new JPanel(); JLabel label2 = new JLabel("プレイヤー人数は?"); panel2.add(label2); add(panel2); } } }

「じゃんけんスタート」

Enterキーを押す

「プレイやー人数は?」
このように動作させるにはどのように直したらよいのでしょうか?
説明が下手ですみませんがよろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

制御とかは全くしてないので
Enterキーを押すたびに「プレイヤー人数は?」 が描画されますが、
(見た目には、わかりませんが)
一応下記ソースで質問部分は解決できます

java

1public class Mian extends JFrame implements KeyListener { 2 3 public static void main(String args[]){ 4 java.lang.System.out.println("main"); 5 Mian frame = new Mian("ジャンケンゲーム"); 6 frame.setSize(1280, 1020); 7 frame.setLocationRelativeTo(null); 8 frame.setVisible(true); 9 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 10 frame.addKeyListener(frame); 11 } 12 13 public Mian(String title){ 14 setTitle(title); 15 JPanel panel1 = new JPanel(); 16 panel1.setLayout(new BorderLayout()); 17 JLabel label1 = new JLabel("ジャンケンスタート", JLabel.CENTER); 18 label1.setFont(new Font("MS ゴシック", Font.BOLD, 36)); 19 panel1.add(label1); 20 add(panel1); 21 22 } 23 24 @Override 25 public void keyPressed(KeyEvent evt) { 26 if(evt.getKeyCode() == KeyEvent.VK_ENTER){ 27 JPanel panel2 = new JPanel(); 28 JLabel label2 = new JLabel("プレイヤー人数は?"); 29 panel2.add(label2); 30 add(panel2); 31 this.validate(); 32 } 33 } 34 35 @Override 36 public void keyTyped(KeyEvent e) { 37 38 } 39 40 @Override 41 public void keyReleased(KeyEvent e) { 42 43 } 44}

投稿2015/09/15 04:31

編集2015/09/16 01:10
shaha

総合スコア166

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

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

daichanman123

2015/09/15 07:20

回答ありがとうございます^^ 2.3点わからないところがあったのですが、 ・keyPressedメソッドのthis.validate();はどういう働きをしているのでしょうか? ・keyTyped、keyReleasedメソッドは必ず書かないといけないのでしょうか? すみませんがよろしくお願いします。
shaha

2015/09/15 07:32

・keyPressedメソッドのthis.validate();はどういう働きをしているのでしょうか? validate()で再描画を行っています ・keyTyped、keyReleasedメソッドは必ず書かないといけないのでしょうか? 抽象クラスであるKeyListener を使っているので必須です
daichanman123

2015/09/15 08:24

回答ありがとうございます^^ そういうことだったんですね! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問