Я пытаюсь написать программу, которая позволяет пользователю перемещать фигуру с помощью клавиш со стрелками и менять цвет с помощью клавиши ввода. Мне ничего не учили графические интерфейсы или программирование на основе событий, так что это мой первый опыт в этом. Я думаю, что я понимаю основы этого, но мне трудно только закончить синтаксис, чтобы все работало. Учебники, которые я нахожу в Интернете, используют таймеры, которые я не использую. Вот мой текущий код:Перемещение фигур с помощью KeyListener в Java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Lab15Panel extends JPanel
{
Color[] colors = new Color[]{Color.blue, Color.green, Color.red, Color.orange, Color.yellow};
int initialX = 90;
int initialY = 80;
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(colors[0]);
g.fillRect(initialX, initialY, 100, 100);
Lab15Key listen = new Lab15Key();
}
private class Lab15Key implements KeyListener
{
@Override
public void keyTyped(KeyEvent event)
{
if (event.getKeyChar() == KeyEvent.VK_LEFT)
{
initialX++;
}
}
@Override
public void keyReleased(KeyEvent event)
{}
@Override
public void keyPressed(KeyEvent event)
{}
}
}
Я делаю свой кадр в другом классе. Сейчас я не уверен в двух вещах: 1. Как использовать addKeyListener с заполненной формой? Есть ли способ ссылаться на заполненную форму? 2. Является ли моя идея «перемещать» форму правильно? То есть, создавая переменные за пределами методов для расположения фигуры, а затем используя мои KeyEvents для изменения этих чисел? Или форма не будет перемещена в этом случае? (Примечание. Я только написал код для события ключа вверх.)
Любая помощь, которую вы можете мне дать, будет оценена по достоинству. Я определенно новичок в Java, и я просто пытаюсь понять эти основные понятия, но ресурсы, которые у меня есть, не помогают.
Упс! Я так часто возился с кодом, что забыл изменить его. Он должен читать g.fillRect (intialX, initialY, 100, 100); Я только что отредактировал его. –