次の様なプログラムを書きました。
class listener implements KeyListener{
String TypedKeyName;
....
}
勿論必要なmethodは全て記述しました。TypedKeyNameには入力された
キーの名前を保存します。
次に、Appletクラスを拡張し、Runnableをimplementsしたクラスを
作成して、その中でlistenerのインスタンスlis_insを作り、
addKeyListener(lis_ins);
としました。run()の中で永久ループにしてTypedKeyNameの値をpaint()にて
表示させようと思ったのですが、上手くいきません(全く更新されません)。
参考書には
addEventListener(this);
とばかり載っているのですが、ひょっとして、Componentクラスを
継承していないとリスナーには指定出来ないのでしょうか?
分かり難い質問で申し訳ありません。
No.1
- 回答日時:
失礼ですが、ちょっと状態がよくわからないので質問させてください。
paint()はうまくうごいているのですか?
keyEvent以外の方法でキックしてみたら期待通りに動くのでしょうか。
イベント受け取ったさきで実行するメソッドに
System.out.println("xxx");
いれてコンソール表示みてみて、
コンソールにxxxが表示されていないようなら
「キーイベントが正しくわたっていない」
xxxは表示されているならイベントの問題ではない、
ということになるとおもうのですが…
回答有難うございます。動かない理由は自分のつまらないミスでした。
スレッドを動かすのを忘れていたのです。全く見当違いな所に疑いを持って
いました。
System.out.println("xxx");
成る程、appletviewerを使っている場合、そうすればデバッグに
活用する事が出来ますね。目から鱗が落ちました。
改めて、有難うございました。
No.2ベストアンサー
- 回答日時:
paintの方には問題がない(本当にKeyEventが発生していない)と仮定して書いてみます。
Appletにフォーカスは当たっているでしょうか?
すべてのバージョンでそうなのか分かりませんが、うちのappletviewerで動かした場合、AppletがrequestFocusしてやらないとフォーカスが来ないようです。
IE5上で実行すると、最初からフォーカスが当たっているみたいですが。
Componentクラスを継承していないとリスナーには指定出来ない、ってことはありません。
回答有難うございます。無事動かす事が出来ました。
原因は二つありました。一つはご指摘の通りFocusが当たっていなかった事。
それからもう一つの原因なんですが・・御免なさい!
実はinit()内でスレッドのインスタンスを作り、start()させるのを
忘れていました。いくらrun()を記述しようと、スレッドが動いていなければ
repaint()が呼び出されるわけがありませんでした。
こんな初歩のミスで、しかもそれに気づく事なく安易に質問してしまい、
申し訳ありませんでした。
そして改めて、親切に教えて頂いて有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java javaのクラスの分け方について質問です。 APIの内部用と外部用でクラスを分けたいのですがインター 2 2022/04/26 16:06
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- アプリ Android studio 初心者 Hello Android!しか表示されない 1 2023/08/01 08:47
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(vba)他のアプリケーションの右...
-
ゲッターを使わないで変数にア...
-
Javaで下線
-
「ラッパークラス」の存在意義...
-
メソッドの引数にクラス名を渡す
-
c++でのヘッダーファイルの循環...
-
JTextFieldの入力制限
-
VBがオブジェクト指向言語でな...
-
Javaのインスタンス化の構文の...
-
ASP.NETでの共通コードの書き方...
-
interface,extend,implementの...
-
サーバー上のフォルダ情報の取得
-
「継承されたメソッドの可視性...
-
単体テストのテストケースにて...
-
【C#】クラスのコンストラクタ...
-
JTableのCellにJLabelを埋め込...
-
TableViewでタップした時にキー...
-
ファイルパスが取得出来ない(P...
-
抽象クラスをJUNITでテストする...
-
オブジェクト指向の特徴
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
interface,extend,implementの...
-
抽象クラスをJUNITでテストする...
-
「ラッパークラス」の存在意義...
-
(vba)他のアプリケーションの右...
-
ASP.NETでの共通コードの書き方...
-
VB DLLプロジェクトについて
-
C#からDLLを呼びたいのですが・...
-
c++でのヘッダーファイルの循環...
-
委譲って何ですか?
-
「継承されたメソッドの可視性...
-
【C#】クラスのコンストラクタ...
-
Javaでのジェネリクス型パラメ...
-
C# 「データが失なわれる可能性...
-
Excel vbaのプログラムでガンマ...
-
ファイルパスが取得出来ない(P...
-
オーバーライドとラッパーの違い
-
compareToにおける「自然順序付...
-
メソッドの引数にクラス名を渡す
-
vb.net 自作プロパティの削除に...
-
VBがオブジェクト指向言語でな...
おすすめ情報