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

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

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

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

Q&A

解決済

1回答

1668閲覧

じゃんけん ゲーム

otsumu

総合スコア13

Java

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

0グッド

0クリップ

投稿2015/09/17 05:14

アプレットでじゃんけんゲームを作っているのですが、
initメソッドやpaintメソッド、repaintメソッドなどどういうときに使えばいいのかわかりません。

コード public class APPLET extends Applet implements KeyListener{ public void paint(Graphics g){ Font f = new Font("MS明朝", Font.BOLD, 30); g.setFont(f); g.drawString("スタート", 50, 50); } Graphics g; public void keyPressed(KeyEvent e){ switch(e.getKeyCode()){ case KeyEvent.VK_HOME: g.drawString("モード選択", 50, 50); default: } repaint(); } public void keyTyped(KeyEvent e) { } public void keyReleased(KeyEvent e) { } Button bt1, bt2, bt3; public void init(){ add(bt1 = new Button("モード1")); add(bt2 = new Button("モード2")); bt1.addActionListener(new MyListener()); bt2.addActionListener(new MyListener()); } class MyListener implements ActionListener{ public void actionPerformed(ActionEvent e){ if(e.getSource() == bt1){ //ボタン1が押された時の処理 } else{ //ボタン2が押された時の処理 } repaint(); } } public void paint(Graphics g){ }

このような感じで進めているのですが、全然動作しません。

「スタート」画面表示

HOMEキーを押す

「モード選択」モード1、モード2のボタン表示

各ボタン押されたときの処理

paintメソッドで文字を表示させたいと考えている

こういう流れにしたいと思っているのですがpaintメソッドやinitメソッドの使い方があっているかわかりません。
また文字を表示させるのにpaintメソッドを使うと重複でエラーが出てどうすればいいかわかりません。

initメソッド、paintメソッド、repaintメソッドなどの使い方と「モード選択」モード1、モード2のボタン表示まで動かすにはプログラムをどのように修正したらいいのか教えていただきたいです。

長くなりましたがよろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

・表示されていないは描画領域を確保していないからではないでしょうか。
・描画し直しは表示する文字列を変数化し、HOMEキーを押したタイミングで変数に代入し、再描画を依頼すればできそうです。
・重複エラーはpaintメソッドを二個定義しているためです。

そもそもいろいろと理解し違えていますので、ここを参考にして書き直してみてください。

投稿2015/09/17 09:35

yona

総合スコア18155

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

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

otsumu

2015/09/18 01:13

回答ありがとうございます^^ 勉強させていただきます! 一つ質問なのですが、 重複エラーはpaintメソッドを二個定義しているためです。 この意味は分かるのですが、文字を2回以上分けて表示させたいときはpaintメソッドが使えないのならどうしたらいいのでしょうか?
yona

2015/09/18 05:16

表示文字列をフィールド変数として宣言 private String hoge = "スタート"; paint内では変数を使って描画 g.drawString(hoge, 50, 50); HOMEキーが押されたら文字列を変更 hoge = "モード選択"
otsumu

2015/09/18 07:02

回答ありがとうございます^^ なるほどです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問