![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Мишель |
|
|||
|
Unregistered |
Доброе время суток!
Вот такая проблема с мышой под Макинтош. У меня есть библиотека, которая генерирует события и кидает их в системную очередь. Запущенное приложение воспринимает эти события, как будто им реально управляет пользователь через мышь и клавиатуру. Так вот, под виндой и линухом все со свистом работает. А вот на Макинтошах возникают проблемы с правой кнопкой мыши, которая должна вызывать popup. Событие генерируется, но меню не всплывает. Причем это имеет не для всех компонент, а для некоторых. Пробовал вместо нажатия правой кнопки генерировать Ctrl + нажатие левой кнопки. Не помогает. Если запустить приложение и жать правую кнопку (или Ctrl + левую) руками, все рулит. В чем грабли? Мишель |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
А код можно посмотреть. И надо Domestic Cat подождать - у него как раз Мак есть. Мне аж завидно
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
К сожалению, код нельзя. Корпоративная собственность, блин. |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
У меня все работает:
По-моему, загвоздка в том, что и правая, и левая кнопки мыши имеют код 1. Можно генерировать и передавать евент с кодом 2, а вот нажать мышку так, чтобы такой евент сгенерился, не получается. -------------------- |
|||
|
||||
| Мишель |
|
|||
|
Unregistered |
К сожалению, работает у тебя не совсем то. Мне нужно, чтобы при генерации клика правой кнопкой на компоненте вызывалось popup menu. Автоматически, как это и положено всякой компоненте. Я знаю, что события правого клика в моей проге успешно генерятся. Но меню почему-то не вызывается. Я пытался внутри драйвера мышиных событий автоматически заменять эти события на клик средней кнопки вместо правой или на клик левой кнопки с Ctrl. Не помогает Насчет того, что правая и левая кнопки имеют одинаковый код для Маков - это не так. Проверял уже. Они, как и положено, имеют номер 1 и 3, соответственно маски 16 и 4. |
|||
|
||||
| Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Хм, я ловлю маус ивенты и печатаю код баттона - и правая, и левая кнопки дают код 1.
Видишь ли, у eМака на правую кнопку никаких попапов не выскакивает, только если с контролом, причем даже если делать это вручную, то ни на каком Java-приложении это само по себе не заработает - только если самому показывать попап. Может, на других и по-другому, но все равно рассчитывать на это не стоит. Это сообщение отредактировал(а) Domestic Cat - 24.8.2004, 21:59 -------------------- |
||||
|
|||||
| Гость_Irina |
|
|||
|
Unregistered |
Domestic Cat, объясни тогда, пожалуйста, что надо делать, чтобы под MAC Popup Menu увидеть. Наша группа написала приложение на Java Swing для Requirement Engineering и у нас один из заказчиков работает на МАС. При нажатии правой кнопки конткстменю не появляктся. Должны мы что-то в коде менять или заказчик неправильно контекстменю вызывает?
|
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Гость_Irina
Здравствуйте. Мы очень рады, что Вы зашли на наш форум. Если у Вас будет желание и возможность - регистрируйтесь и становитесь полноправным участником нашего форума. Чем больше профессионалов соберется, тем лучше будет для всех. |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Создать "вручную" JPopupMenu и показывать его, отлавливая мышиные события, как в примере выше. Можно тут более подробно прочесть. http://java.sun.com/docs/books/tutorial/ui...menu.html#popup Кстати, а что вообще должно быть в том меню? -------------------- |
|||
|
||||
| Мишель |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 25.8.2004 Репутация: нет Всего: нет |
Я делаю то же самое - мне выдается 1,2,3 для каждой кнопки. Возможно, дело в том, что я работаю с Маком не напрямую, а через VNC-клиент.
А у меня вручную правая кнопка работает Это сообщение отредактировал(а) Мишель - 25.8.2004, 16:26 |
||||||||
|
|||||||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
А какой Мак у тебя?
-------------------- |
|||
|
||||
| Gretchen |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 25.8.2004 Где: München Репутация: 1 Всего: 4 |
Gretchen alias Гость_Irina Domestic Cat спасибо за ответ. Вообщем-то в проекте PopupMenu вызывается классическим способом, как описано в Sun Swing Tutorial, то есть if (e.isPopupTrigger()) { popup.show(e.getComponent(), e.getX(), e.getY()); } Обычное context menu для выделенного куска текста. Под Windows и Linux ни каких проблем не возникает. А вот под МАС якобы меню не появляется. Якобы, потому что я сама не пробовала под МАС запускать приложение, об ошибке сообщает один из заказчиков, который работает с Apple Notebook. И возникает вопрос, действительно приложение, написанное на Java многоплатформенное, или всё-таки могут на других платформах сюрпризы возникать? Должна ли я задумываться, разрабатывая программу в Java, о том, что возможно эта часть кода на MAC OS будет работать по другому. |
|||
|
||||
| Мишель |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 25.8.2004 Репутация: нет Всего: нет |
А что именно про Мак тебя интересует и как это можно выяснить? Так все -таки, можешь что-нибудь сказать про события с Ctrl+ left click? Или может, на Маках как-то по-другому надо попап вызывать? Не так, как в том примере? |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Честное слово, не знаю. У меня (MacOSX 10.3.3) все работает. Все что могу придумать - советуется добавлять if (e.isPopupTrigger()) {... и в mausePressed и в mouseReleased для кроссплатформенности.
-------------------- |
|||
|
||||
| Мишель |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 25.8.2004 Репутация: нет Всего: нет |
Да я это делаю... У меня 10.3.4. Ладно, спасибо за помощь. Если решится проблема, напишу сюда, может быть, кому-нибудь пригодится. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |