简体   繁体   English

无法使用箭头键移动JLabel

[英]Cannot move a JLabel with the arrow keys

So I'm trying to make a JLabel ("player") move 10 px in a direction I choose as you can see in the code below, but I just can't make it work. 因此,我正在尝试使JLabel(“玩家”)沿我选择的方向移动10像素,如下面的代码所示,但是我无法使其工作。 I've run it and pressed an arrow key but nothing happened so I was hoping you guys could help me ^^. 我已经运行它并按下箭头键,但是什么也没发生,所以我希望你们能帮助我^^。

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);

    }

}

BTW sorry for poor coding :D 顺便说一句不好意思编码:D

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM