• 締切済み

アプレットのキーボード入力において

Dosプロンプトよりアプレットを起動して、キーボード入力によるアクションの実行時がうまく動作しません。 例えばAとBのボタンを作成してBボタンにショートカットを設定します。 この場合Aボタンをクリックしてからでないとショートカットが有効になりません。(アプレット自体をクリックしてからでも駄目です。) テキストフィールドにキーボード入力によるアクションはまったく反応しません。

みんなの回答

  • ssr-y6
  • ベストアンサー率71% (5/7)
回答No.1

 KeyListenerは、それを登録したコンポーネントにフォーカスがあるときにしかキーイベントを送付しません。 よって、常にキーイベントを受け取りたい場合は、 そのリスナをフォーカスを獲得する可能性があるすべてのコンポーネットに登録しておかなければなりません。 下の例では、AのショートカットはAボタンのみに、Bのショートカットはすべてに登録してあります。 import java.awt.*; import java.awt.event.*; class keyinframe extends Frame implements ActionListener { private Button BA, BB; private Label LB; private TextField TF; private int Cnt; class keyA extends KeyAdapter { public void keyPressed(KeyEvent ke) { if (ke.getKeyCode() == KeyEvent.VK_A) actionPerformed(new ActionEvent(this, 0, "A")); }; } class keyB extends KeyAdapter { public void keyPressed(KeyEvent ke) { if (ke.getKeyCode() == KeyEvent.VK_B) actionPerformed(new ActionEvent(this, 0, "B")); }; } public keyinframe() { super("Key Input"); setSize(320, 240); setLayout(new GridLayout(4, 1)); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { System.exit(0); }; }); add(BA = new Button("A")); add(BB = new Button("B")); add(LB = new Label("Start")); add(TF = new TextField()); BA.addActionListener(this); BA.setActionCommand("A"); keyA KA = new keyA(); BA.addKeyListener(KA); BB.addActionListener(this); BB.setActionCommand("B"); keyB KB = new keyB(); BA.addKeyListener(KB); BB.addKeyListener(KB); TF.addKeyListener(KB); Cnt = 0; }; public void actionPerformed(ActionEvent ae) { String s = ae.getActionCommand(); if (s.compareTo("A") == 0) s = "A"; else if (s.compareTo("B") == 0) s = "B"; else s = ""; LB.setText(s + Integer.toString(Cnt ++)); }; } public class keyinput { public static void main(String args[]) { keyinframe MF = new keyinframe(); MF.setVisible(true); }; };

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 入力されたキーボードの判断

    お世話になっています。 只今VCで、USBによって2つのキーボードが繋がっていて、それぞれ独立した入力を受け付けるようなアプリを作成したいと思っています。 例えばですが、2つのテキストボックスを上下に配置し、Aというキーボードから「ABC」と入力すると上のテキストボックスに「ABC」と表示し、Bといキーボードから「123」と入力すると下のテキストボックスに「123」と表示されるようなイメージです。 または、テキストボックスが1つだけで、Aというキーボードから入力を受け付けるが、Bというキーボードからの入力は受け付けないというイメージです。 入力されたキーボードのデバイスポート等が分かれば実現が可能かなと考えているのですが、調べてもその方法が分からなかったため、どなたかアドバイスを頂けないでしょうか? (そもそも、そんなことは実現不可だという場合もご指摘願います。)

  • コンボボックスでデータ入力

    Access 2000 フォームにコンボボックスとテキストボックスを配置しています。 コンボボックスには種別[A][B][C]を選択できるようにし、 テキストボックスには納期日の「年」「月」「日」の3つのテキストボックスを 配置しました。 「種別」「納期日」を入力後、実行ボタンをクリックすると テーブル「T_商品」の種別フィールド、納期日フィールドに NULL値のフィールドに一括でデータを入力したいと考えております。 どのようにすればいいのでしょうかよろしくお願いします。

  • JAVAアプレットとIIS6.0について

    おせわになります。 JAVAアプレット初心者です。 現在、JAVAアプレットにて、テキストファイルを読込むプログラムを作成しており、このプログラムをIIS5.0上で実行すると正常に動作するのですが、それをIIS6.0上で実行すると、正常に動作せず、JAVAアプレット実行中に停止してしまいます。 アプレットビュアーで見たところ、最後にInputStreamReader()関数で引っかかってしまっている様なのですが、IIS6.0の場合なにか特別な設定が必要なのでしょうか? ご存知の方がいらっしゃいましたら、お助け下さい。 宜しく御願い致します。

    • ベストアンサー
    • Java
  • Java初心者ですが・・・

    Java初心者ですが・・・ こんにちは 早速ですが質問させていただきます アプレットで、正解のときはテキストフィールドの背景色が赤系、 不正解なら青系の色になる、百ます計算をつくってみたのですが、 すべてのテキストフィールドに答えを入力して、ボタンを押すと、 きちんと判定されるのですが、 空白のテキストフィールドがあると、コマンドプロンプトに 大量にメッセージが表示されて、きちんと動作しなくなります おそらく、テキストフィールドのgetTextや、 Integer.parseIntのエラーだと思うのですが、 空白のテキストボックスがある場合、その背景色を黄色系の色にするには、 どのようにすればよいのでしょうか あと、javascriptの、resetのボタンのように、ボタンから、 すべてのテキストフィールドをクリアするには どのようにすればよいのでしょうか お手数ですがよろしくお願いします

    • ベストアンサー
    • Java
  • DOS 特定の文字列を含むファイルのみの抽出方法

    C直下に2つのテキストファイル「A.txt」「B.txt」が存在するとします。 Aには「Start」、Bには「Second」という文字列が含まれているとします。 これらのテキストを、BATを使って『テキスト内に特定の文字列が含まれているファイル』のみをDOSプロンプト上に表示する方法をご教示願います。 ■想定するコマンド実行結果 ・Start.BATを実行→DOSプロンプトにて「A.txt」のみが表示する。 ・Second.BATを実行→DOSプロンプトにて「B.txt」のみが表示する。 よろしくお願いします。

  • キーボード入力が突然変になる

    キーボード入力時に、Pと入力すると、OPになり隣のキーボード文字が入力されている、クリップとかごみが挟まっていません。ちなみに、英語キーボードです9,O,P,Lの付近全部です。なおDOSプロンプトでやっても同じです。(日本語モードも英数モードも) 突然なおったり、症状が起こったりしています。マシンはdell LATITUDE D505 OSはXP ご存知のかたお教えください。

  • java アプレット

    javaのアプレットでの質問です。 MouseListenerのマウスクリック時の動作についてですが、 ----------------------------------------------- public void mouseClicked(Event e){   (1)~   (2)~ } ----------------------------------------------- において、奇数クリック時に(1)を実行、偶数クリック時に(2)を実行するというように分岐させることはできるのでしょうか? if(e.getClickCount()%2!=0)で奇数回クリックとして、elseで偶数回クリックとしようとしたのですが、ClickCountの間隔的な問題なのかうまく動作できませんでした。 何かこうすれば良いという案があれば、教えていただけないでしょうか?

    • ベストアンサー
    • Java
  • Windows2000でキーボード入力ができない

    Windows2000を使っているのですが、 コマンドプロンプトを使用していると、 突然キーボードの入力を受け付けなくなりました。 テキストエディタなどその他すべてで文字入力が できなくなりました。 何をやってしまったのか、まったく分かりません。 マウスは効いたので、しょうがなくマウスを使って、 再起動すると直りました。 何が原因でこのようになったのでしょうか。 再起動しないで直す方法はあるでしょうか。

  • キーボード入力で

    キーボード入力で指定したキー『A』を押して指定したシーンに移動して、そのシーンが終了したら最初のシーンに戻り再生し始めるアクションスクリプトを知りたいのですが、何方か教えくれませんか?お願いします。

  • ファイルデータをキーボード入力に見せかける方法

    大量のデータを素早くキーボード(USB接続)から入力したときにアプリケーションが正しく動作するかどうかをテストしたい。 しかし、キーボードからの手入力では入力速度に限界があるので、あらかじめテキストファイルに大量の文字を入力しておき、そのテキストファイルを読込んであたかもキーボードから入力されたかのように振る舞わせ、アプリケーションの動作をチェックできないでしょうか。 アプリケーションにはユーザが操作する画面があり、画面上にテキストボックスがあります。 そのテキストボックスにテキストファイルから読み込んだ大量文字をあたかもキーボードから入力されたかのように自動的に入力(取込)をしたいのです。 テキストファイルを開いてコピペでよいのでは?と思うかも知れませんが、入力された文字の中にある特定の文字があればその文字が入力された時点である処理を行いたいので、大量文字の全文コピペではそのテストにならないのです。 できるのであればその方法を教えてください。