java - 无法使用箭头键移动 JLabel

标签 java swing jlabel keylistener

所以我试图让 JLabel(“玩家”)按照我选择的方向移动 10 px,如下面的代码所示,但我就是无法使其工作。我已经运行了它并按下了箭头键,但什么也没发生,所以我希望你们能帮助我^^。

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Random;

public class Main extends JFrame {

    JLabel player = new JLabel();
    JLabel separator = new JLabel();
    JLabel object = new JLabel();

    public Main() {

        setSize(400, 500);
        setLayout(null);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setTitle("BenTY");

        separator.setOpaque(true);
        separator.setBackground(Color.black);
        separator.setBounds(0, 400, 400, 1);
        add(separator);

        player.setBackground(Color.black);
        player.setOpaque(true);
        player.setBounds(195, 390, 10, 10);
        player.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent ke)
            {
                if(ke.getKeyCode() == KeyEvent.VK_DOWN)
                {
                    player.setBounds(player.getX(), player.getY()+10, 10, 10);
                    repaint();
                }
                if(ke.getKeyCode() == KeyEvent.VK_UP)
                {
                    player.setLocation(player.getX(), player.getY() - 10);
                    repaint();
                }
                if(ke.getKeyCode() == KeyEvent.VK_LEFT)
                {
                    player.setLocation(player.getX()-10,player.getY());
                    repaint();
                }
                if(ke.getKeyCode() == KeyEvent.VK_RIGHT)
                {
                    player.setLocation(player.getX()+10,player.getY());
                    repaint();
                }
            }
        });
        add(player);

        Random random = new Random();
        int oLocationX = random.nextInt(40) * 10;
        int oLocationY = random.nextInt(40) * 10;
        object.setBackground(Color.red);
        object.setOpaque(true);
        object.setBounds(oLocationX, oLocationY, 10, 10);
        add(object);

    }

    public static void main(String[] args) {

        Main ui = new Main();
        ui.setVisible(true);

    }

}

顺便说一句,对于糟糕的编码感到抱歉:D

最佳答案

关于java - 无法使用箭头键移动 JLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19006833/

相关文章:

java - JLabel 随输入到 JTextArea 中的文本移动

java - Android与PC Socket连接

Java8 Stream - 来自 IntStream 的字节 HashSet

java - 如何将键绑定(bind)附加到 JSplitPane 分隔符的向上和向下箭头?

java - 如何使用双缓冲消除闪烁(java swing)

java - 使用 KeyListeners 更好地进行 JLabel 移动

java - ItemListener 不改变值 Java

java - 无法使用 mysql "like"语句填充 jtable

java - StringBuffer(String str) 和 StringBuffer(CharSequence chars) 的区别

Java 开关按钮