Я пишу класс для перемещения круга по экрану, но основная проблема заключается в том, что логические переменные не изменяются на 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) {
}
}
Используйте привязки клавиш над 'KeyListener', чтобы преодолеть все связанные с этим проблемы с помощью KeyListener. См. [Как использовать привязки клавиш] (http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html) – MadProgrammer
О, и если вы не используете «BufferStrategy», я бы также рекомендовал используя библиотеку Swing над библиотекой AWT ... – MadProgrammer