#java #keyboard #click #mouse #jframe
#java #клавиатура #щелчок #мышь #jframe
Вопрос:
Я хотел выбрать объект внутри JFrame и переместить его с помощью клавиш со стрелками клавиатуры. Я делал с клавиатурой, всякий раз, когда я нажимал клавиши со стрелками, она перемещалась соответственно направлению. Я хочу переместить несколько объектов. Я попытался поместить несколько объектов, и они переместились одновременно xD
tldr; есть ли способ, при котором вы можете щелкнуть только по одному объекту с помощью мыши и управлять им с помощью клавиш со стрелками клавиатуры?
Комментарии:
1. Можете ли вы объяснить, как вы заставляете объекты перемещаться? Вы говорите о таких компонентах, как JButtons или о каких-то объектах, которые вы нарисовали на экране?
2. нарисованные объекты. есть класс, который называется Movable . в нем есть методы нажатия / освобождения клавиш. другой класс Painter расширяет JPanel реализует ActionListener, в нем есть частный класс AL extends KeyAdapter с / методы keyreleased / pressed .внутри него также выполняется actionperformed, это repaint() в конструкторе painter setfocusable true, addkeylistener new al(), я загружу исходный код
3. не знаю, но ссылка перенаправляет на пользовательскую ошибку, бла-бла-бла, я попробую то, что сказал Sentil 🙂
4. Я удалил вашу мертвую ссылку.
Ответ №1:
Несмотря на то, что вопрос недостаточно ясен, перемещение одного или нескольких объектов не является проблемой. Вам нужно использовать прослушиватель KeyEvent для объекта, который вы хотите прослушать, и перемещать компоненты на основе KeyEvent.
Вот некоторые ссылки:http://download.oracle.com/javase/tutorial/uiswing/events/keylistener.html
Комментарии:
1. на самом деле у меня есть keyPressed и KeyRelease в этих объектах, но проблема в том, что у них одинаковые условия, например, при нажатии влево все объекты будут перемещаться влево. есть ли способ, при котором вы можете щелкнуть только по одному, и этот объект будет перемещаться?
2. Затем вам нужно зарегистрировать прослушиватель для каждого из этих компонентов или проверить источник события и переместить только этот компонент. И вы могли бы использовать клавишу Tab, чтобы сосредоточиться на компонентах, а не использовать щелчок мыши, если вы предпочитаете