1

次の(部分的な)コードが与えられます:

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

public class Test extends Applet implements MouseListener , KeyListener
{
    private static final long serialVersionUID = 1L;
    private static final int TOTAL_POINTS = 500;
    private static final int THRESHOLD = 5;

    // the arrays that contain the indexes of the points that the user created 
    private int[] m_Xindex, m_yIndex;  

    // The number of points that the user created 
    private int m_pointsCreated;       

    @Override
    public void keyTyped(KeyEvent keyEvent) 
    {
          char key = keyEvent.getKeyChar();
          if (key == 'F')
              System.out.println("123");
    } 

    @Override
    public void mouseReleased(MouseEvent arg0) {/* Empty */ }

    @Override
    public void mouseClicked(MouseEvent e) {/* Empty */ }

    @Override
    public void mouseEntered(MouseEvent e) {/* Empty */ }

    @Override
    public void mouseExited(MouseEvent e) {/* Empty */ }

    @Override
    public void mousePressed(MouseEvent myEvent) {/* Empty */ }

    @Override
    public void keyPressed(KeyEvent keyEvent)  {}

    @Override
    public void keyReleased(KeyEvent keyEvent) {}
}  

作業中のコードを削除し、問題のあるコードのみを残しました。

を押すFと画面に印刷したいのですが、画面123に何も印刷されません。

のコードの何が問題になっていますkeyTypedか?

4

1 に答える 1

1
  1. に変更(key == 'F')if (key.equals('F'))ます。同等ではなく、オブジェクトの同等性をテストします。
  2. focusableコンポーネントが&toであることを確認してくださいrequestFocusInWindow()@Override後者は、start()メソッドで行うのが最適です。
  3. AWTとの代わりにSwing(JApplet)とキーバインディングを使用することを検討してください。AppletKeyListener
于 2013-03-26T13:35:26.720 に答える