6 / 6 / 2
Регистрация: 04.10.2011
Сообщений: 115
|
||||||
1 | ||||||
Обработка событий23.10.2011, 22:59. Показов 2877. Ответов 8
Метки нет (Все метки)
В общем Пишу шахматы. Рисую доску. использую менджер компоновки GridLayout, и добавляю туда панель с изображением. Как мне определить по какой именно клетке шелкнул пользователь. Помогите написать обработичк событий так чтобы было известно куда было кликнуто.
0
|
23.10.2011, 22:59 | |
Ответы с готовыми решениями:
8
Обработка событий Обработка событий мыши Обработка событий клавиатуры Обработка событий мыши |
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
|
|
24.10.2011, 05:35 | 2 |
Ну во первых, учитывая, что ваши элементы типа "PicturePanel" с именами pp и pp1 будут использоваться в дальнейшем, то ссылки на них нужно сохранять, хотя бы в массив, желательно двумерный или в какую-нибудь коллекцию. А так в цикле переменные pp и pp1 постоянно (на каждом шаге цикла) на новые объекты ссылаются, а ссылок на старые не остается. Можно, конечно из JpanelBoard методами getComponents() или getComponentAt(point p) вытаскивать эти панельки и уже им привязывать обработку.
Для начала рекомендую оформить создание доски так, что бы остались ссылки на все объекты-панельки "клеточки" доски.
1
|
6 / 6 / 2
Регистрация: 04.10.2011
Сообщений: 115
|
|
24.10.2011, 21:40 [ТС] | 3 |
Это все хорошо но как конкретно это сделать? сохраняем рр рр1 в масив. ТАк а даьлеш каки именнно привязть к ним сылки. Укозательй ведь нет в джаве.
0
|
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
|
|||||||||||
25.10.2011, 09:52 | 4 | ||||||||||
Не надо ничего привязывать, само все привяжется.
Создай в классе поле:
Далее можешь добавлять на эти панельки фигуры:
1
|
6 / 6 / 2
Регистрация: 04.10.2011
Сообщений: 115
|
|
26.10.2011, 01:32 [ТС] | 5 |
Ну собственно все реализовал. Только вернемся к public void mouseClicked(java.awt.event.MouseEvent arg0). Как мне получить на какую клеточку я клацаю из PicturePanel[][] ?
0
|
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
|
|
26.10.2011, 21:57 | 6 |
Из PicturePanel[][] ссылки на клетки будешь брать, когда будешь описывать события, не зависящие от действий пользователя. А для обработки события mouseClicked есть несколько способов:
1. Для каждой панельки, нужно будет завести свой mouseAdapter, и у каждого описать метод mouseClicked по своему. (нужно будет описать минимум 64 метода). 2. Сделать внешний класс, реализующий интерфейс MouseListener, и в нем, в методе mouseClicked, можно делать обработку, в зависимости от источника события arg0.getSourse(). 3. То же самое, что и второй, только не отдельным классом, а классом формы (самообработка), будет проще, останутся ссылки на все члены класса формы. (наиболее подходящее в случае с большим массивом источников события). 4. arg0.getPoint() вернет объект типа Point из которого можно узнать координаты курсора мыши при нажатии, и на основании них, определить куда ткнул пользователь. (муторно) Это пока что на ум пришло, может быть есть и другие способы, гораздо легче.
0
|
6 / 6 / 2
Регистрация: 04.10.2011
Сообщений: 115
|
|
26.10.2011, 23:50 [ТС] | 7 |
До этого я и сам догодался не могу описать события mouseClicked иза того что НЕУМЕЮ этого делать. поэтому и спрашиваю.
0
|
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
|
|||||||||||||||||||||
27.10.2011, 08:44 | 8 | ||||||||||||||||||||
Добавляешь к классу формы реализацию интерфейса MouseListener. Необходимо будет реализовать все методы этого интерфейса, среди которых будет mouseClicked.
1
|
6 / 6 / 2
Регистрация: 04.10.2011
Сообщений: 115
|
|
27.10.2011, 14:13 [ТС] | 9 |
Благодарю вышло) 2 недели мучений.
0
|
27.10.2011, 14:13 | |
27.10.2011, 14:13 | |
Помогаю со студенческими работами здесь
9
Не работает обработка событий Обработка событий мыши Обработка событий и метод paint() Обработка событий несколькими классами Обработка событий на графическом интерфейсе Назначение клавиш и обработка событий Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |