簡體   English   中英

KeyListener 沒有到達我的 switch 語句

[英]KeyListener not reaching my switch statement

我有這個代碼:

    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;

    import javax.swing.JApplet;


    public class applet extends JApplet implements KeyListener, MouseListener{
        int a = 0;
        int b = 0;
        public void init(){
            setSize(500,500);
            addKeyListener( this );
             addMouseListener( this );
        }
        public void paint(Graphics g){
            g.setColor(Color.BLUE);
            g.fillRect(a, b, 400, 400);
        }
        @Override
        public void keyPressed(KeyEvent e) {
        System.out.println("Hello!")    
switch(e.getKeyCode()){
                case KeyEvent.VK_DOWN: a -= 5;
                break;
                case KeyEvent.VK_UP: a += 5;
                break;
                case KeyEvent.VK_RIGHT: b += 5;
                break;
                case KeyEvent.VK_LEFT: b -= 5;
                break;
            }
            repaint();
        }
        @Override
        public void keyReleased(KeyEvent e) {
            // TODO Auto-generated method stub

        }
        @Override
        public void keyTyped(KeyEvent e) {
            // TODO Auto-generated method stub

        }
        @Override
        public void mouseClicked(MouseEvent arg0) {
            // TODO Auto-generated method stub

        }
        @Override
        public void mouseEntered(MouseEvent arg0) {
            // TODO Auto-generated method stub

        }
        @Override
        public void mouseExited(MouseEvent arg0) {
            // TODO Auto-generated method stub

        }
        @Override
        public void mousePressed(MouseEvent arg0) {
            // TODO Auto-generated method stub

        }
        @Override
        public void mouseReleased(MouseEvent arg0) {
            // TODO Auto-generated method stub

        }
    }

它甚至沒有到達 switch 語句,從我的調試 println 代碼可以看出。 為什么會發生這種情況,我該怎么做才能解決這個問題? 如果這太寬泛,請不要討厭,因為我是這個主題的完全菜鳥

KeyListener只會在它注冊的組件是可聚焦的並且具有焦點時觸發事件。

JApplet有一個JRootPane ,它在小程序的JRootPane添加了JLayeredPane和內容窗格(以及其他內容),這可能意味着關鍵偵聽器可能永遠無法開始通知事件(因為其他元素正在阻止它)。

相反,使用鍵綁定

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM