GaneshRfromSpace Ответов: 1

Могу ли я добавить прослушиватель ключей к графическим фигурам в java AWT ?


Мой пользовательский интерфейс состоит из 8 округлых прямоугольных фигур, и каждая фигура, выбранная навигационными кнопками клавиатуры (вверх и вниз), должна отображать отдельную рамку.

Когда я попытался добавить ключевой слушатель к фигурам..

((Component)homeShape).addKeyListener(new KeyListener(){

    @Override
    public void keyTyped(KeyEvent e) {}

    @Override
    public void keyPressed(KeyEvent e) {}

    @Override
    public void keyReleased(KeyEvent e) {}});


1. форма должна быть типизирована для компонента.

2. Это утомительная работа, чтобы добавить keyListener к "Н" количество форм в пользовательском интерфейсе.

Что я уже пробовал:

Я использовал прослушиватель мыши, и он отлично работал.
@Override
	public void mouseClicked(MouseEvent e) {
	if ((e.getButton() == 1) && homeShape.contains(e.getX(),e.getY()) ) {
			System.out.println("homebutton clicked");
			//code that displays new frame in the screen
		}
}


Прослушиватель мыши обнаружил фигуру, щелкнувшую с границами (например, getX () и e.getY ()).

Но сейчас я хочу сделать это с помощью клавиатуры, просто с помощью кнопок со стрелками вверх,вниз,влево,вправо.

1. Как KeyListener определить, какие формы это ориентироваться ?

2. Как я должен использовать KeyListener для навигации по фигурам ?

1 Ответов

Рейтинг:
12

Richard MacCutchan

1. Кейлистенер не будет знать, какую форму вы имеете в виду, вы можете захватить эту информацию только с помощью мыши.
2. Вам нужно будет знать, где находится фокус, то есть какая фигура была нажата в последний раз. Вам также нужно решить, сколько пикселей формы составляет каждое нажатие клавиши.