Java объект не обновляется из KeyEvent?

В настоящее время я работаю над простой программой, которая будет подсвечивать квадрат в зависимости от нажатия соответствующей клавиши (q для левого верхнего угла, e для правого верхнего края и т. Д.), И я не могу заставить прямоугольники срабатывать из-за моих ключевых событий. События клавиш запускаются, и операторы if выполняются для каждого из них (помещается в system.out в цвете оператор if и отображается при нажатии клавиши), однако объекты вообще не обновляются. Вот мой код:

package acm;
import acm.graphics.*;
import acm.program.*;

import java.util.*;
import java.awt.*;
import java.awt.event.*;

public class NewFinalGame extends GraphicsProgram {

    private GObject redBrick, blueBrick, yellowBrick, greenBrick;
    private GRectangle redBounds, blueBounds, yellowBounds, greenBounds;
    Color dullRed = new Color(102, 0, 0);
    Color dullBlue = new Color(0, 0, 51);
    Color dullYellow = new Color(100, 100, 0);
    Color dullGreen = new Color(0, 51, 0);
    int level = 1;

    public void init() {
        addKeyListeners();
        addMouseListeners();
        setSize(500, 500);
        setBackground(Color.black);
        mainMenu();
    }

    public void run() {
        waitForClick();
        removeAll();
        addSquares();
        redBounds = redBrick.getBounds();
        blueBounds = blueBrick.getBounds();
        yellowBounds = yellowBrick.getBounds();
        greenBounds = yellowBrick.getBounds();
    }

    public void mainMenu() {
        GLabel welcome = new GLabel("Welcome to Simon.");
        welcome.setColor(Color.white);
        add(welcome, 100, 100);
        GLabel clickToContinue = new GLabel("Click to continue...");
        clickToContinue.setColor(Color.white);
        add(clickToContinue, 150, 150);
    }

    public void addSquares() {
        yellowBrick = new GRect(50, 50, 175, 175);
        ((GRect) yellowBrick).setFilled(true);
        yellowBrick.setColor(dullYellow);
        add(yellowBrick);
        blueBrick = new GRect(275, 50, 175, 175);
        ((GRect) blueBrick).setFilled(true);
        blueBrick.setColor(dullBlue);
        add(blueBrick);
        redBrick = new GRect(50, 275, 175, 175);
        ((GRect) redBrick).setFilled(true);
        redBrick.setColor(dullRed);
        add(redBrick);
        greenBrick = new GRect(275, 275, 175, 175);
        ((GRect) greenBrick).setFilled(true);
        greenBrick.setColor(dullGreen);
        add(greenBrick);
    }

    public void highlight(GObject rect) {
        if (rect.getColor() == dullYellow) {
            System.out.println("Success!");
            rect.setColor(Color.yellow);
            pause(1000);
            rect.setColor(dullYellow);
        }
        if (rect.getColor() == dullBlue) {
            rect.setColor(Color.blue);
            pause(1000);
            rect.setColor(dullBlue);
        }
        if (rect.getColor() == dullRed) {
            rect.setColor(Color.red);
            pause(1000);
            rect.setColor(dullRed);
        }
        if (rect.getColor() == dullGreen) {
            rect.setColor(Color.green);
            pause(1000);
            rect.setColor(dullGreen);
        }
    }

    public void keyPressed(KeyEvent e) {
        switch (e.getKeyCode()) {

            case KeyEvent.VK_Q:
                highlight(yellowBrick);
                break;

            case KeyEvent.VK_W:
                highlight(blueBrick);
                break;

            case KeyEvent.VK_A:
                highlight(redBrick);
                break;

            case KeyEvent.VK_S:
                highlight(greenBrick);
                break;
        }
    }
}

Спасибо за любую помощь.

0 ответов

Другие вопросы по тегам