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;
}
}
}
Спасибо за любую помощь.