![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
わざわざ見て下さってありがとうございます!
マルチスレッドのアプレットを作っています。全部書くと多すぎるので、およそのものを書きました。
●●●●プログラム本体開始●●●●
public class RPG extends Applet implements Runnable ,KeyListener {
「いくつかのフィールド」
public void init(){
「中略」
RPG hero = new RPG();
Thread heroStep = new Thread(hero);
heroStep.start();
addKeyListener(this);
}
public void run(){
while(true){
try{
Thread.sleep(300);
}
catch(Exception e){}
System.out.println("リペイント直前")
repaint();
System.out.println("リペイント通過");
}
}
public void update(Graphics g){
System.out.println("アップデイト実行");
paint(g);
}
public synchronized void paint(Graphics g){
System.out.println("ペイント実行");
「中略」
}
public void keyPressed( KeyEvent e ){
「中略」
repaint();
}
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
}
●●●●プログラム本体終了●●●●
うまく動かなくて困っています。repaintは、キー入力をした時と、0.3秒毎にheroStepから呼び出される事にしたいのです。キー入力の場合は確実に実行されているのですが、0.3秒毎の方は全然実行してくれないのです。
コンソールを見ると、
リペイント直前
リペイント通過
と、毎回「アップデイト実行」「ペイント実行」が出力されないのです。何がいけないのでしょうか?
万が一、大切な部分を省略していたり、不足の部分がございましたら、教えて頂ければ追加で掲載致します。
どうか宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
こんばんは。
>RPG hero = new RPG();
>Thread heroStep = new Thread(hero);
>heroStep.start();
まず、思いつくのが、RPGクラスのインスタンスをひとつ余分に作っているのが問題ですね。
これだと、RPGクラスのインスタンスが二つあることになります。
runメソッド内で表示されていないRPGクラスのrepaintを呼んでいることになります。
上記コードは、
Thread heroStep = new Thread(this);
heroStep.start();
こう書くべきだと思います。
わざわざご回答下さいましてありがとうございます!
全くPecoPlusさんのおっしゃる通りでした。まだよく分かっていない事が山のようにありそうです。でも、その分、おととい、きのうと、毎日少しずつ新しい知識が増えてる気がします。日々勉強です(笑)
最後になりましたが、早急かつ、たいへん分かりやすいご回答を下さいまして、ほんとうにありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java eclipse実行ができない 2 2022/07/27 04:47
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- Java java final 1 2022/06/10 22:49
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# PC画面を録画するプログラムでdllの読み込みエラー 1 2023/04/22 08:31
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数を動的に利用するには?
-
中カッコ{}だけの記述について
-
Socketの接続のタイムアウトを...
-
GetterとSetterをやったのに。
-
System.exit()の値を取得したい
-
インタフェイス実装と抽象クラ...
-
プログラミングの問題です。大...
-
Javaでlog4jを使ってログ出力を...
-
リフレクション Method.invoke(...
-
URIからURIへの相対URIの求め方
-
javaのudp通信について
-
C言語のポインターに関する警告
-
ループ処理の際、最後だけ","を...
-
[JAVA]try 内の変数を外で!?
-
JSPやサーブレットでSystem.out...
-
VBAで配列の計算
-
javaで質問です。 文字列2023/2...
-
ダブルクォーテーションのrepla...
-
Path型をString型へ変換する(Java)
-
System.err. printlnとSystem.o...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数を動的に利用するには?
-
プログラミングの問題です。大...
-
中カッコ{}だけの記述について
-
Javaでlog4jを使ってログ出力を...
-
NoSuchMethodErrorが解決できま...
-
Socketの接続のタイムアウトを...
-
コンストラクタの引数の中のnew?
-
javaのプログラミングで作るRPG...
-
System.exit()の値を取得したい
-
JSP/Servletのパラメータの受け...
-
Processing :指定フォルダ内の...
-
javaで特定の文字列から特定の...
-
インタフェイス実装と抽象クラ...
-
Javaで日本語の出力が文字化けする
-
randomで
-
StringクラスのcompareToメソッド
-
【初心者です】javaで平均値を...
-
DESを使用した暗号化/復号化処...
-
初心者なので教えてほしいです。
-
ArrayList でスタックを
おすすめ情報