• ベストアンサー

JAppletでJBottunを使いつつKeyAdappterを使いたい

少し前からJavaの勉強を始めて、今JAppletを使用してるのですが、タイトル通り、JBottunを設置するとKeyAdapater上手く作動しません。 スペースキーを押すと、ボタンが押されるようなので、キー入力がボタンの方に行ってしまうようなのです・・・。 キー入力とボタン入力を別々に独立して作動させる事は可能でしょうか。 例えば、キーボードから入力した文字をラベルに表示し、ボタンを押したらラベルに「ボタンが押されました」といった具合にしたいのです。 初心者故に説明不足かつ初歩的な質問かと思いますが、どうかよろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ontojava
  • ベストアンサー率61% (8/13)
回答No.2

追加で必要なのは requestFocusInWindow(); です。 ボタンを先に押す必要がありますが動きます。 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class sample extends JApplet { private JLabel lb,lb2; private JButton bt; private int counter = 0; public void init(){ Container cnt=getContentPane(); //Container cnt2=getContentPane(); lb=new JLabel("ラベルです"); lb2=new JLabel("ここに入力されたキーが表示されます"); bt=new JButton("ボタン"); cnt.add(lb,BorderLayout.SOUTH); cnt.add(lb2,BorderLayout.CENTER); cnt.add(bt,BorderLayout.NORTH); addKeyListener(new key()); bt.addActionListener(new but()); } class key extends KeyAdapter { public void keyPressed(KeyEvent e) { char a=e.getKeyChar(); lb2.setText(a+"が入力されました"); } } class but implements ActionListener { public void actionPerformed(ActionEvent e) { counter = counter + 1; lb.setText(counter + "回ボタンを押しました"); requestFocusInWindow(); } } }

PurplePers
質問者

お礼

おおすごい!ボタンを使用しつつキー入力ができる理想形です。 これを参考にして今作ってるプログラムを完成させていただこうと思います。 ありがとうございました。

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

その他の回答 (1)

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.1

症状を再現できる短いサンプルプログラムのコードを投稿してください。ふつうは、スペースキーを押すとボタンのクリックになる、なんてことはありえません。

PurplePers
質問者

補足

http://www1.axfc.net/uploader/File/so/21821 こんな感じのソースです。 自分ではどこが間違っているのかよく分かりませんでした・・・。

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

関連するQ&A