1

簡単な Java プログラムを作成しようとしていますが、入力が得られません。誰でも解決策を提案できますか?

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;


class KeyIns extends JFrame implements KeyListener {

 public void KeyIns(){
     addKeyListener(this); //==> this is why .... 
 }

@Override
public void keyPressed(KeyEvent e) {
    // TODO Auto-generated method stub
    System.out.println("1");
}

@Override
public void keyReleased(KeyEvent e) {
    // TODO Auto-generated method stub
    System.out.println("2");
}

@Override
public void keyTyped(KeyEvent e) {
    // TODO Auto-generated method stub
    System.out.println("2");
}

}

public class Hello {
public static void main(String[] args){

    KeyIns inkey = new KeyIns(); 
    inkey.setSize(368, 300);
    inkey.setLocation(250, 250);
    inkey.setVisible(true);
    }
}
4

2 に答える 2

4

KeyListener登録されているコンポーネントがフォーカス可能であり、フォーカスがある場合にのみ応答します。

もう1つの問題はJFrame、ルートペインやコンテンツペインなど、その上に他のコンポーネントが多数含まれていることです。フレームにaを登録しKeyListenerても、おそらく何も達成されません。

より良い解決策は、キーバインディングAPIを使用することです

あなたが何を達成しようとしているのかに基づいて、多くのことが重要になります

于 2013-03-16T08:45:46.773 に答える
1

問題は、メソッドを呼び出していないことです

 public void KeyIns(){
     addKeyListener(this); //==> this is why .... 
 }

メソッド KeyIns() を呼び出すか、このように単語 void を削除して (コンストラクターになるように)

 public KeyIns(){
     addKeyListener(this); //==> this is why .... 
 }
于 2013-03-16T08:44:56.807 に答える