Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向main()添加keylistener不起作用_Java_Swing_Jframe_Keylistener_Keyevent - Fatal编程技术网

Java 向main()添加keylistener不起作用

Java 向main()添加keylistener不起作用,java,swing,jframe,keylistener,keyevent,Java,Swing,Jframe,Keylistener,Keyevent,我正在用Java制作一个游戏,其中一个球不断向前移动,没有用户控制,但是用户可以使用上下箭头键控制球的垂直移动,但是我坚持通过我的main方法将keylistener类/无论它是什么添加到我的JFrame中。基本上,我会添加(keylistener\u类/方法),Java(非常正确地)抱怨我的类或方法不是一个组件。那么,我的问题是,我应该如何将keylistener添加到我的Jframe中 干杯, 马特 代码: 您可以通过以下方式将KeyListener添加到您的JPanel: addKeyLi

我正在用Java制作一个游戏,其中一个球不断向前移动,没有用户控制,但是用户可以使用上下箭头键控制球的垂直移动,但是我坚持通过我的main方法将keylistener类/无论它是什么添加到我的JFrame中。基本上,我会添加(keylistener\u类/方法),Java(非常正确地)抱怨我的类或方法不是一个组件。那么,我的问题是,我应该如何将keylistener添加到我的Jframe中

干杯, 马特

代码:

您可以通过以下方式将KeyListener添加到您的JPanel:

addKeyListener(new KeyListener(){

    ...//all the methods.

});
或者,如果不使用所有方法,则可以使用
KeyAdpater

addKeyListener(new KeyAdapter(){

    ...//Only the methods you want.

});

我通过将KeyListener添加到您的
JFrame
中来实现它。或者,您可以为KeyListener创建一个单独的类,并以这种方式添加它(而不是使用匿名内部类)。我补充说:

public static void main (String[] args){
        JFrame Win = new JFrame("Pong");
            Game game = new Game();
            Win.add(new Game());
            Win.addKeyListener(new KeyListener() {

                @Override
                public void keyTyped(KeyEvent e) {
                }

                @Override
                public void keyPressed(KeyEvent e) {
                    if(e.getKeyCode() == KeyEvent.VK_UP){
                        ys = -1;
                    }
                    if (e.getKeyCode() == KeyEvent.VK_DOWN){
                        ys = 1;
                    }
                }

                @Override
                public void keyReleased(KeyEvent e) {
                }

            });
            Win.setResizable(false);
            Win.setSize(900, 600);
            Win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            Win.setVisible(true);
            while (true) {
                shift();
                Win.repaint();
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e){
                    e.printStackTrace();
                }
            }   
      }
}
public static void main (String[] args){
        JFrame Win = new JFrame("Pong");
            Game game = new Game();
            Win.add(new Game());
            Win.addKeyListener(new KeyListener() {

                @Override
                public void keyTyped(KeyEvent e) {
                }

                @Override
                public void keyPressed(KeyEvent e) {
                    if(e.getKeyCode() == KeyEvent.VK_UP){
                        ys = -1;
                    }
                    if (e.getKeyCode() == KeyEvent.VK_DOWN){
                        ys = 1;
                    }
                }

                @Override
                public void keyReleased(KeyEvent e) {
                }

            });
            Win.setResizable(false);
            Win.setSize(900, 600);
            Win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            Win.setVisible(true);
            while (true) {
                shift();
                Win.repaint();
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e){
                    e.printStackTrace();
                }
            }   
      }
}