アプレットでのキー入力の問題 - 反応しない

このQ&Aのポイント
  • アプレットでキー入力しても反応しない問題が発生しています。
  • 具体的にいうと、矢印キーを入力しても反応がありません。
  • アプレット自体をクリックしても反応がありません。
回答を見る
  • ベストアンサー

アプレットでのキー入力

具体的にいうと以下のアプレットを実行した場合に矢印キーを入力しても反応(上、下、、、が表示されない。)がないのです。 一度アプレット自体をクリックしても反応がありません。 何が悪いのでしょうか?よろしくお願いします。 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class practice extends JApplet { private JLabel lb1,lb2; public void init() { Container cnt = getContentPane(); lb1 = new JLabel("矢印キーでお選びください。"); lb2 = new JLabel(); cnt.add(lb1,BorderLayout.NORTH); cnt.add(lb2,BorderLayout.SOUTH); addKeyListener(new practiceKeyListener()); } class practiceKeyListener extends KeyAdapter { public void KeyPressed(KeyEvent e) { String str; int k = e.getKeyCode(); switch(k){ case KeyEvent.VK_UP: str = "上";break; case KeyEvent.VK_DOWN: str = "下";break; case KeyEvent.VK_LEFT: str = "左";break; case KeyEvent.VK_RIGHT: str = "右";break; default: str = "他のキー"; } lb2.setText(str + "ですね。"); } } }

  • Java
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • tediwec
  • ベストアンサー率70% (21/30)
回答No.1

こんにちは。 public void KeyPressed ではなくて public void keyPressed です。 kを小文字にしないと別のメソッドになってしまい、オーバーライドにならないからです。

関連するQ&A

  • javaアプレットについて質問です

    本の通りにソースを記入し、コンパイラしました。 その後実行したら Exception in thread"main"java.lang.NoSuchMethodError:main とコマンドプロンプトに表示されました。 何が原因ですか? 因みに下記がソースコードです import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Sample13 extends JApplet { private JLabel lb; private JTextField tf; public void init() { //コンポーネントの作成 lb = new JLabel("お選びください。"); tf = new JTextField(); //コンテナへ追加 add(lb, BorderLayout.NORTH); add(tf, BorderLayout.SOUTH); //リスナの登録 tf.addActionListener(new SampleActionListener()); } //リスナクラス class SampleActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { JTextField tmp = (JTextField) e.getSource(); lb.setText(tmp.getText() + "ですね。"); } } }

  • 2列目を右寄せにしたい

    今JAVAを勉強しているのですが、 下記のソース上でどうしても 列の右寄せができません。 リファレンスの調べ方が下手なのかもしれませんが わかる方宜しくお願いします。 ---------------------------------------------- import java.awt.*; import javax.swing.*; public class Sample3 extends JApplet { private JLabel lb; private JTable tb; private JScrollPane sp; public void init() { //コンテンツペインの取得 Container cnt = getContentPane(); String colname[] = {"車名","価格","月日"}; String data[][] = { {"乗用車","1200円","10-01"}, {"トラック","2400円","10-05"}, }; //コンポーネントの作成 lb = new JLabel("いらっしゃいませ"); tb = new JTable(data,colname); sp = new JScrollPane(tb); //コンテナへ追加 cnt.add(lb,BorderLayout.NORTH); cnt.add(sp,BorderLayout.CENTER); } } -------------------------------------------------

    • ベストアンサー
    • Java
  • Javaのswingについて質問です。

    public class Enshu12 extends JApplet { private JLabel lb1; private JLabel lb2; int num=0; int now=0; public void init() { lb1=new JLabel("数字を入力してください。"); lb2=new JLabel(""+num+""); add(lb1,BorderLayout.NORTH); add(lb2,BorderLayout.SOUTH); addKeyListener(new SampleKeyListener()); } public class SampleKeyListener extends KeyAdapter { int i; public void keyPressed(KeyEvent e) { char c=e.getKeyChar(); int mod=e.getModifiersEx(); if(mod==InputEvent.SHIFT_DOWN_MASK||c=='-'||c=='/'){ select(c); } else{ inputNum(c); calc(); lb2.setText(""+num+""); } } public void select(char c) { switch(c){ case '+': now=1;lb1.setText("足し算をします。数字を入力して下さい。");break; case '-':now=2;lb1.setText("引き算をします。数字を入力してください。");break; case '*':now=3;lb1.setText("かけ算をします。数字を入力して下さい。");break; case '/':now=4;lb1.setText("割り算をします。数字を入力して下さい。");break; } } public void inputNum(char c) { switch(c){ case '0': i=0;break; case '1': i=1;break; case '2': i=2;break; case '3': i=3;break; case '4': i=4;break; case '5': i=5;break; case '6': i=6;break; case '7': i=7;break; case '8': i=8;break; case '9': i=9;break; } } public void calc() { switch(now){ case 1: num=num+i; break; case 2: num=num-i; break; case 3: num=num*i;break; case 4: num=num/i; break; default : num=i; break; } } } 簡単な電卓を作り電卓機能としてはできたのですが、数字と演算子を交互に入力させたいため、数字または演算子の入力が連続入力された場合は例外処理をさせたいのですが、例外のクラスは作るとしてどのような仕組みにしたら良いでしょうか?単純にbooleanでそれぞれの切り替えをするとうまく動きません・・><教えてください。

    • ベストアンサー
    • Java
  • 多角形を動かす範囲を設定したいのですが…。

    多角形をKeyListenerで動かす範囲を設定 したいのですがどうすればいいでしょうか。 import java.awt.Color; import java.awt.Graphics; import java.awt.Polygon; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import javax.swing.JPanel; public class JavaGame2 { public static void main(String age[]) { JFrame frame = new JFrame(); frame.setTitle("テスト"); frame.setSize(400, 400); frame.setLocation(1000, 200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); MyPanel panel = new MyPanel(); frame.add(panel); frame.setVisible(true); } } class MyPanel extends JPanel implements KeyListener{ private Ziki ziki; public MyPanel() { setBackground(Color.black); ziki = new Ziki(); addKeyListener(this); setFocusable(true); } protected void paintComponent(Graphics g) { super.paintComponent(g); ziki.draw(g); } public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); switch(key) { case KeyEvent.VK_UP : ziki.moveUpZiki(); break; case KeyEvent.VK_RIGHT :ziki.moveRightZiki(); break; case KeyEvent.VK_DOWN : ziki.moveDownZiki(); break; case KeyEvent.VK_LEFT : ziki.moveLeftZiki(); break; }repaint(); } public void keyReleased(KeyEvent e){} public void keyTyped(KeyEvent e){} } class Ziki { private Polygon p; public Ziki() { int[] xpoints = {240,260,250}; int[] ypoints = {260,260,240}; p = new Polygon(xpoints,ypoints,xpoints.length); } void draw(Graphics g) { g.fillPolygon(p); } public void moveLeftZiki() { for (int i=0; i < p.xpoints.length; i++ ) { p.xpoints[i] -= 5; } } public void moveRightZiki() { for (int i=0; i < p.xpoints.length; i++ ) { p.xpoints[i] +=5; } } public void moveUpZiki() { for (int i=0; i < p.ypoints.length; i++ ) { p.ypoints[i] -= 5; } } public void moveDownZiki() { for (int i=0; i < p.ypoints.length; i++ ) { p.ypoints[i] += 5; } } }

    • ベストアンサー
    • Java
  • Javaのレイアウトマネージャについてです

    ある課題で、この図のようなレイアウトになければいけないとの指定があるのでやってるんですがhttp://www.dotup.org/uploda/www.dotup.org3826.jpg.html 選択演算子の下のラベル(選択した演算子を表示するもの)がうまくレイアウトできません。ここまでは何とかたどり着いたんですが・・ http://www.dotup.org/uploda/www.dotup.org3828.jpg.html 自分が作ったソースはこちらです。 lb[0] = new JLabel("選択演算子"); lb[1] = new JLabel(" "); lb[2] = new JLabel("0"); lb[3] = new JLabel("です"); lb[0].setHorizontalAlignment(JLabel.LEFT); lb[0].setVerticalAlignment(JLabel.TOP); lb[1].setFont(new Font("Helvetica",Font.BOLD,20)); lb[1].setBorder(new EtchedBorder()); lb[1].setHorizontalAlignment(JLabel.LEFT); lb[1].setVerticalAlignment(JLabel.BOTTOM); lb[2].setFont(new Font("Helvetica",Font.BOLD,20)); lb[2].setBorder(new EtchedBorder()); lb[2].setHorizontalAlignment(JLabel.CENTER); lb[3].setHorizontalAlignment(JLabel.CENTER); bt_en[0] = new JButton("+"); bt_en[1] = new JButton("-"); bt_en[2] = new JButton("="); bt_en[3] = new JButton("C"); bt_en[4] = new JButton("AC"); cnt.setLayout(new GridLayout(3,1)); pn[0].setLayout(new BorderLayout()); pn[1].setLayout(new GridLayout(4,3)); pn[2].setLayout(new FlowLayout()); pn[0].add(lb[0],BorderLayout.WEST); pn[0].add(lb[1],BorderLayout.SOUTH); pn[0].add(lb[2],BorderLayout.CENTER); pn[0].add(lb[3],BorderLayout.EAST); どのようにすればいいのか教えていただきたいです。 ちなみに使っている教科書は「やさしいJava活用編」です。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Javaアプレットについてですが

    Javaアプレットでボタンを押したら数字が増えるものを作っているのですがどうもうまく動きません。 ソースは下の通りです。 変更しなければいけないところがあるならお願いします。 import java.applet.Applet; import java.awt.Graphics; import java.awt.Button; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class Sample7 extends Applet implements Runnable, ActionListener { Button bt; int num; public void init() { bt = new Button("開始"); add(bt); bt.addActionListener(this); Thread th; th = new Thread(this); th.start(); } public void actionPerformed(ActionEvent ae) { public void run() { try{ for(int i=0; i<11; i++){ num = i; repaint(); Thread.sleep(1000); } } catch(InterruptedException e){} } } public void paint(Graphics g) { String str = num + "です。"; g.drawString(str, 50, 50); } }

    • ベストアンサー
    • Java
  • Radioボタンの割込み処理

    毎度、お世話になります。 Radioボタンの割込み処理について、お教えください。 コード中の『se[0].addChangeListener(this)』にて、Radioボタンをクリックしますと 割込みが発生し、正常に動作します。 Q1)このthisを他のワードに変更できないでしょうか? 理由:他のプログラムで、thisと記述した瞬間に、エラーcheckに引っかかります。 nullの場合は、OKですが、割込みが発生しません。 以上、宜しくお願いします。 ============== import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridLayout; import javax.swing.ButtonGroup; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; class JRadioButtonTestB extends JFrame implements ChangeListener { JRadioButton se[]=new JRadioButton[2]; JLabel lb1, lb2; JRadioButtonTestB() { lb1 = new JLabel(); lb2 = new JLabel(); Container cont = getContentPane(); cont.setLayout(new BorderLayout()); //性別================================ se[0] = new JRadioButton("男性"); se[1] = new JRadioButton("女性"); se[0].addChangeListener(null); //<----問題点 se[1].addChangeListener(null); // JPanel pSex = new JPanel(); pSex.setBackground(Color.cyan); pSex.setLayout(new FlowLayout()); pSex.add(new JLabel("性別")); pSex.add(se[0]); pSex.add(se[1]); ButtonGroup bgsex = new ButtonGroup(); bgsex.add(se[0]); bgsex.add(se[1]); JPanel kaku = new JPanel(); kaku.setBackground(Color.green); kaku.setLayout(new GridLayout(3,2)); kaku.add(new JLabel("確認")); kaku.add(new JLabel(" ")); kaku.add(new JLabel("性別")); kaku.add(lb1); cont.add("North",pSex); cont.add("South",kaku); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("JRadioButtonTestB"); setSize(320, 200); setVisible(true); } public void stateChanged(ChangeEvent e) { if(se[0].isSelected()) lb1.setText("男性"); if(se[1].isSelected()) lb1.setText("女性"); } public static void main(String[] args) { new JRadioButtonTestB(); } } //===

    • ベストアンサー
    • Java
  • javaでスタート画面を作っていて困っています。

    現在javaでゲームのスタート画面を作っているのですが、パネルが透過されずに困っています。 プログラムソースは import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.ImageIcon; import java.awt.Container; import java.awt.BorderLayout; import javax.swing.*; import java.awt.Font; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.*; import java.awt.event.*; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.ImageIcon; import java.awt.Container; import java.awt.BorderLayout; import javax.swing.border.LineBorder; import javax.swing.border.EtchedBorder; import java.awt.Color; import java.awt.Container; class Start最新版 extends JFrame{ public static void main(String args[]){ Start最新版 frame = new Start最新版("タイトル"); frame.setVisible(true); } Start最新版(String title){ setTitle(title); setBounds(10, 10, 1024, 768); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel p = new JPanel(); p.setOpaque( false ); ImageIcon icon1 = new ImageIcon("Start.jpg"); JLabel label1 = new JLabel(icon1); JLabel label2 = new JLabel(); p.add(label1); Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER); JButton button1 = new JButton("ゲームを始める"); button1.setFont(new Font("Mairyo", Font.PLAIN, 30)); JPanel n = new JPanel(); n.setOpaque(false); n.setLayout(new BoxLayout(n, BoxLayout.Y_AXIS)); n.add(Box.createRigidArea(new Dimension(290,30))); n.add(button1); となっています。「ゲームを始める」ボタンだけを残して、周りのパネルを透過して画像を表示させたいのですが、うまくいきません!解決方法をご存知の方どうか教えていただきたいです!よろしくお願いします。

  • Java バックグラウンドでキーを監視したい

    Swingを使用しています。ウィンドウにフォーカスが外れても、どのキーが押されたか判定できる方法を教えて下さい。 フォーカスがあっていれば、動作するプログラムは作れました。 import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; public class KeyListenerOnBackgroundTest extends JFrame implements KeyListener{ public KeyListenerOnBackgroundTest() { setSize(300, 200); setDefaultCloseOperation(EXIT_ON_CLOSE); addKeyListener(this); } public static void main(String[] args){ new KeyListenerOnBackgroundTest().setVisible(true); } @Override public void keyPressed(KeyEvent e) { // 文字とコードを表示する System.out.println(e.getKeyCode()+":"+e.getKeyChar()); } @Override public void keyReleased(KeyEvent e) {} @Override public void keyTyped(KeyEvent e) { } }

    • ベストアンサー
    • Java
  • ボタンクリック後パネルを再描画repaintしたい

    ボタンをクリック後にstaticで保持していた値にプラス1して その値をパネルに再描画したいと思っています。 下記のプログラムだとボタンをクリックすると (<1<2<3<4)となって画像と数字が増えてしまいます 行いたいのは数字の部分だけが再描画されて カウントされて<3と表示されるだけになってもらいたい クラス1つ目 import java.awt.BorderLayout; import java.awt.Cursor; import java.awt.event.MouseEvent; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class Sample extends JFrame{ static int value=1; JPanel work = new JPanel(); public static void main(String[] args) { Sample frame = new Sample(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(100, 200, 200, 100); frame.add(frame.createPanel(), BorderLayout.LINE_END); frame.setVisible(true); } public JPanel createPanel() { ImageIcon icon = new ImageIcon("./img/left.gif"); JLabel label = new JLabel(); Cursor c = new Cursor(Cursor.HAND_CURSOR); label.setCursor(c); label.setIcon(icon); JLabel strLabel = new JLabel(); String str = Integer.toString(value); strLabel.setText(str); work.add(label); work.add(strLabel); label.addMouseListener(new myListener()); return work; } class myListener extends MouseAdapter{ public void mouseClicked(MouseEvent e){ System.out.print(Sample.value++); createPanel().repaint(); setVisible(true); } } } クラス2つ目 import java.awt.event.MouseEvent; import java.awt.event.MouseListener; public class MouseAdapter implements MouseListener{ public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mousePressed(MouseEvent e){} public void mouseReleased(MouseEvent e){} }

    • ベストアンサー
    • Java

専門家に質問してみよう