有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java布尔变量未更改为true

我正在编写一个类来在屏幕上移动一个圆圈,但主要的问题是,布尔变量没有变为true,尽管我试图使它们变为true。我不知道我做错了什么。请帮忙。谢谢

public class Restart extends Panel implements KeyListener {

    static final int left = 37;
    static final int right = 39;
    static final int down = 40;
    static final int up = 38;

    static boolean leftPress = false;
    static boolean rightPress = false;
    static boolean upPress = false;
    static boolean downPress = false;

    static int x1 = 0;
    static int y1 = 0;

    Restart(int width, int length, int minusBy) {
        super(width, length, minusBy);
    }

    public static void main(String args[]) throws InterruptedException {
        Restart panel = new Restart(500, 500, 9);
        JFrame frame = new JFrame("Fishy");
        frame.add(panel);
        Frame.showFrame(frame);

        while (true) {

            if (upPress) {
                y1--;
            }
            if (downPress) {
                y1++;
            }
            if (leftPress) {
                x1--;
            }
            if (rightPress) {
                x1++;
            }

            Thread.sleep(1);
            frame.repaint();
        }
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        g.fillOval(x1, y1, 50, 50);
    }

    @Override
    public void keyPressed(KeyEvent e) {

        if (up == e.getKeyCode()) {
            upPress = true;
        }
        if (down == e.getKeyCode()) {
            downPress = true;
        }
        if (left == e.getKeyCode()) {
            leftPress = true;
        }
        if (right == e.getKeyCode()) {
            rightPress = true;
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {

        if (up == e.getKeyCode()) {
            upPress = false;
        }
        if (down == e.getKeyCode()) {
            downPress = false;
        }
        if (left == e.getKeyCode()) {
            leftPress = false;
        }
        if (right == e.getKeyCode()) {
            rightPress = false;
        }
    }

    /* NOT USING */
    @Override
    public void keyTyped(KeyEvent e) {
    }
}

共 (1) 个答案

  1. # 1 楼答案

    您从未将keylistener添加到任何组件。所以你不会得到任何信息。将restart as keylistener添加到一些ComponentJPanel和一些其他可能需要通过调用someComponent.addKeyListener(this)使之可聚焦的setFocusable(true))中。我建议您将侦听器添加到Restart实例本身