在Java中添加KeyListener

在Java中添加KeyListener,java,swing,Java,Swing,这是一个小游戏。在这里,我做了两个同样大小的矩形。每当有人按键盘上的键时,我都想移动它们。但是我不知道如何添加KeyListener。我在这里查阅了以前的答案,但我没有发现我的错误。我甚至搜索了谷歌,但没有任何线索。这是我的代码: import java.awt.*; import javax.swing.*; import java.awt.event.*; class PongGame extends JComponent implements ActionListener { in

这是一个小游戏。在这里,我做了两个同样大小的矩形。每当有人按键盘上的键时,我都想移动它们。但是我不知道如何添加KeyListener。我在这里查阅了以前的答案,但我没有发现我的错误。我甚至搜索了谷歌,但没有任何线索。这是我的代码:

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class PongGame extends JComponent implements ActionListener {
    int ballX = 200;
    int ballY = 340;
    short ballX_Direction = 1;
    short ballY_Direction = 1;
    static int Direction1 = 300;
    static int Direction2 = 300;
    private static keyListener move;
    public static void main(String[] args) {
        JFrame frame = new JFrame("Pong Game");        
        PongGame game = new PongGame();
        frame.add(game);
        frame.pack();
        frame.setSize(900,700);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        frame.setResizable(false);
        Timer t = new Timer(2,game);
        t.start();
    }            
    public void paintComponent(Graphics g) {
        g.setColor(new Color(0,242,237));
        g.fillRect(0,0,900,700);
        g.setColor(Color.black);int a = 60;
        for(int i = 1;i<=5;i++) {
            g.fillRect(444,0+a,12,65);
            a = a+125;
        }
        g.setColor(Color.blue);
        g.fillRect(100,Direction2,15,100);
        g.fillRect(770,Direction1,15,100);
        g.setColor(Color.red);
        g.fillOval(ballX,ballY,20,20);
        repaint();
    }
    public void actionPerformed(ActionEvent e) {
        ballX = ballX + ballX_Direction;
        ballY = ballY + ballY_Direction;      
        if(ballY >= 660) ballY_Direction = -1;
        if(ballY <= 0) ballY_Direction = 1;

        if(ballX >= 444-20 && ballY >= 60-20 && ballX <= 444-20 && ballY <= 185-20) {
            ballX_Direction = -1;
        }
        if(ballX >= 444-20 && ballY >= 185-20 && ballX <= 444-20 && ballY <= 250-20) {
            ballX_Direction = -1;
        }
        if(ballX >= 444-20 && ballY >= 250-20 && ballX <= 444-20 && ballY <= 375-20) {
            ballX_Direction = -1;
        }
        if(ballX >= 444-20 && ballY >= 375-20 && ballX <= 444-20 && ballY <= 500-20) {
            ballX_Direction = -1;
        }
        if(ballX >= 444-20 && ballY >= 500-20 && ballX <= 444-20 && ballY <= 625-20) {
            ballX_Direction = -1;
        }
        repaint();
    }        
}

class keyListener implements KeyListener {
    public void keyPressed(KeyEvent e) {
        int key = e.getKeyCode();
        if(key == KeyEvent.VK_UP) 
        {
            PongGame.Direction1 = PongGame.Direction1 - 25
        }
        if(key == KeyEvent.VK_DOWN) 
        {
            PongGame.Direction1 = PongGame.Direction1 - 25;
        }
        if(key == '1') 
        {
            PongGame.Direction2 -= 25;
        }
        if(key == '4') 
        {
            PongGame.Direction2 += 25;
        }
    }
    public void keyReleased(KeyEvent e) {}  
    public void keyTyped(KeyEvent e) {}  
}    
import java.awt.*;
导入javax.swing.*;
导入java.awt.event.*;
类PongGame扩展JComponent实现ActionListener{
int-ballX=200;
int-ballY=340;
短球X_方向=1;
短ballY_方向=1;
静态int方向1=300;
静态int方向2=300;
私有静态密钥侦听器移动;
公共静态void main(字符串[]args){
JFrame=新JFrame(“乒乓球游戏”);
PongGame game=新PongGame();
frame.add(游戏);
frame.pack();
框架尺寸(900700);
frame.setLocationRelativeTo(空);
frame.setVisible(true);
frame.setresizeable(false);
定时器t=新定时器(2,游戏);
t、 start();
}            
公共组件(图形g){
g、 setColor(新颜色(0242237));
g、 fillRect(0,0900700);
g、 setColor(颜色为黑色);INTA=60;
对于(int i=1;i=660)ballY_方向=-1;

如果(ballY=444-20&&ballY>=60-20&&ballX=185-20&&ballX=250-20&&ballX=375-20&&ballX=500-20&&ballXJFrame有一种方法:

frame.addKeyListener(new keyListener());

它需要添加到GUI部件,特别是具有焦点的部件,因为这是操作系统关于输入的内容。

JFrame有一种方法:

frame.addKeyListener(new keyListener());

它需要添加到GUI部分,特别是有焦点的部分,因为这是操作系统关于输入的内容。

请下次正确格式化您的代码。如果您是Java新手,最好从学习基础知识开始。现在,在您的应用程序中寻找可以侦听KeyListener的UI组件。在您的代码中,试试这个.addKeyListener(new keyListener());因为您已经找到了接口keyListener,文档中没有告诉您如何使用它吗?顺便说一句,“我是Java新手”(该接口已被编辑删除)-我建议你从不太复杂的任务开始学习该语言。你基本上是试图一次完成10个步骤,这必然会让你更加头疼。你需要将
KeyListener
添加到一个可聚焦的GUI部分,该部分可以对其做出反应。请下次正确格式化你的代码。如果你是Java新手,你会这样做最好从学习基础知识开始。现在,在应用程序中寻找一个可以监听KeyListener的UI组件。在代码中,试试这个。addKeyListener(new KeyListener());既然您已经找到了接口KeyListener,文档中不也会告诉您如何使用它吗?顺便说一句,“我对Java不熟悉”(编辑时删除了该接口)-我建议你从不太复杂的任务开始学习该语言。你基本上是试图一次完成10个步骤,这必然会让你更加头疼。你需要将
keylister
添加到一个可聚焦的GUI部分,然后可以对其做出反应。你可能还应该解释为什么要将其添加到GUI中part@XtremeBaumer更好?您可能还应该解释为什么要将其添加到GUI中part@XtremeBaumer更好?