Вернуться   Финляндия по-русски » Жизнь в Финляндии » Koмпьютeры, Teлeфoны, TV & Co
Логин
Пароль

Ответ
 
Опции темы Поиск в этой теме Оценить тему Опции просмотра
Old 26-01-2009, 13:25   #1
prius
Registered User
 
Сообщений: 1,341
Проживание:
Регистрация: 08-07-2008
Status: Offline
Репутация: 0
Вопрос по Яве

Рас здесь такие спецы водятся, решил спросит вопрос, на который сам пока решения не нашел. Есть самодельный Component, помещенный на JPanel . Хотелось бы отловить момент, когда мыша попадает на определенную область компонента. Проблемы возникают, когда мыша нажата за границей компонента, а потом затащенна на компонент. В этом случае dragMouse не приходит. Кто-нибудь такое дело отлавливал?
 
0
 
0
    Ответить с цитированием
Old 26-01-2009, 18:37   #2
prius
Registered User
 
Сообщений: 1,341
Проживание:
Регистрация: 08-07-2008
Status: Offline
Репутация: 0
Хмм... вроде спецов много, а на вопрос чайника никто не ответил :|
 
0
 
0
    Ответить с цитированием
Old 26-01-2009, 20:10   #3
Бабай
Registered User
 
Аватар для Бабай
 
Сообщений: 1,866
Проживание:
Регистрация: 18-11-2008
Status: Offline
Репутация: 0
Поразбежалися, сокровища ищут, тесты проводят, кризис борют...
 
0
 
0
    Ответить с цитированием
Old 26-01-2009, 20:43   #4
Suhov
Реалист
 
Аватар для Suhov
 
Сообщений: 15,352
Проживание: да
Регистрация: 13-06-2007
Status: Offline
Репутация: 0
Цитата:
Сообщение от prius
Рас здесь такие спецы водятся, решил спросит вопрос, на который сам пока решения не нашел. Есть самодельный Component, помещенный на JPanel . Хотелось бы отловить момент, когда мыша попадает на определенную область компонента. Проблемы возникают, когда мыша нажата за границей компонента, а потом затащенна на компонент. В этом случае dragMouse не приходит. Кто-нибудь такое дело отлавливал?


мне кажется что если мыша нажата в контексте одного компонента, то и эвенты будут роутиться тому же компоненту, даже если выйти из его контекста, до тех пор пока не отжата, и отжатие ему пойдёт. просто драг, без нажатия, будет приходить тем, над которыми курсор, потому что контексты меняются вместе с движением. причём если драг не обрабатывается компонентом, то он передаётся дальше по цепочке его детям, входящим в контекст, и находящимся под курсором.
 
0
 
0
    Ответить с цитированием
Old 26-01-2009, 21:54   #5
prius
Registered User
 
Сообщений: 1,341
Проживание:
Регистрация: 08-07-2008
Status: Offline
Репутация: 0
Цитата:
Сообщение от Suhov
мне кажется что если мыша нажата в контексте одного компонента, то и эвенты будут роутиться тому же компоненту, даже если выйти из его контекста, до тех пор пока не отжата, и отжатие ему пойдёт. просто драг, без нажатия, будет приходить тем, над которыми курсор, потому что контексты меняются вместе с движением. причём если драг не обрабатывается компонентом, то он передаётся дальше по цепочке его детям, входящим в контекст, и находящимся под курсором.


Ну, я уже понял, что драг будет приходить туда, где его нажали. Однако, по цепочке он не передается. Только если самому передавать начать, наверное. Но, на кнопку приходит МоусеЕнтер евент. Можно как-нибудь перехватить тот самый драг евент или вообще его аннулировать?
 
0
 
0
    Ответить с цитированием
Old 26-01-2009, 23:12   #6
Suhov
Реалист
 
Аватар для Suhov
 
Сообщений: 15,352
Проживание: да
Регистрация: 13-06-2007
Status: Offline
Репутация: 0
Цитата:
Сообщение от prius
Ну, я уже понял, что драг будет приходить туда, где его нажали. Однако, по цепочке он не передается. Только если самому передавать начать, наверное. Но, на кнопку приходит МоусеЕнтер евент. Можно как-нибудь перехватить тот самый драг евент или вообще его аннулировать?


драг по цепочке и не должен передаваться. он поступает тому, в чьём контексте была мыша нажата. если там не обрабатывается, то пропадает. компонент может делать с эвентом что захочет - может и детям предать, только своим. поэтому если ваш компонент создан в контексте другого, который получает драг, то это уж его дело - передавать вашему или нет.

я в первом посте неверно выразился. по цепочке передаётся не драг, а простой мув. драг чётко привязан к тому, в чьём контексте произошёл моусеентер.

а зачем вам драг аннулировать? если вы с драгом который адресован вашему компоненту хотите что то делать, то делайте. аналогия с виндой очень прямая. поэкспериментируйте с драгами на рабочем столе - щёлкнули на пустом месте и потянули, всё стало выделяться - главное окно рабочего стола это делает, щёлкнули на папочке и потянули - папочка поехала, тоже окно рабочего стола это делает, а если например над этими папками открыто окошко ворда, и щёлкнули в ворде и потянули, то ворд начал выделять, выехали за пределы окна - всё равно ворд выделяет - потому что ему приходит всё. а если щёлкнули на рабочем столе и потянули, заехали в окно ворда - ворд не реагирует, потому как не получает ничего. и это правильно, так работает роутинг эвентов.
 
0
 
0
    Ответить с цитированием
Old 26-01-2009, 23:28   #7
prius
Registered User
 
Сообщений: 1,341
Проживание:
Регистрация: 08-07-2008
Status: Offline
Репутация: 0
Цитата:
Сообщение от Suhov
драг по цепочке и не должен передаваться. он поступает тому, в чьём контексте была мыша нажата. если там не обрабатывается, то пропадает. компонент может делать с эвентом что захочет - может и детям предать, только своим. поэтому если ваш компонент создан в контексте другого, который получает драг, то это уж его дело - передавать вашему или нет.

я в первом посте неверно выразился. по цепочке передаётся не драг, а простой мув. драг чётко привязан к тому, в чьём контексте произошёл моусеентер.

а зачем вам драг аннулировать? если вы с драгом который адресован вашему компоненту хотите что то делать, то делайте. аналогия с виндой очень прямая. поэкспериментируйте с драгами на рабочем столе - щёлкнули на пустом месте и потянули, всё стало выделяться - главное окно рабочего стола это делает, щёлкнули на папочке и потянули - папочка поехала, тоже окно рабочего стола это делает, а если например над этими папками открыто окошко ворда, и щёлкнули в ворде и потянули, то ворд начал выделять, выехали за пределы окна - всё равно ворд выделяет - потому что ему приходит всё. а если щёлкнули на рабочем столе и потянули, заехали в окно ворда - ворд не реагирует, потому как не получает ничего. и это правильно, так работает роутинг эвентов.

Ну, мне оно надо для следующего. У меня есть собственная кнопка. Если начать драгать из-за ее пределов, а потом затащить на нее, то ни мышаНад и мышаРелесе не придотят. Вобщем-то с этим можно жить, но все-равно выглядит, как глюк.
 
0
 
0
    Ответить с цитированием
Old 26-01-2009, 23:32   #8
Suhov
Реалист
 
Аватар для Suhov
 
Сообщений: 15,352
Проживание: да
Регистрация: 13-06-2007
Status: Offline
Репутация: 0
Цитата:
Сообщение от prius
Ну, мне оно надо для следующего. У меня есть собственная кнопка. Если начать драгать из-за ее пределов, а потом затащить на нее, то ни мышаНад и мышаРелесе не придотят. Вобщем-то с этим можно жить, но все-равно выглядит, как глюк.


нормальное поведение. не глюк. чтобы реализовать драг_и_дроп, если этого хочется, должна быть поддержка со стороны ос. одной явы недостаточно. но для кнопок я даже юзкейс сходу не могу придумать что на них можно кидать, чтобы они хавали. обычно из одного контейнера перекидывают что нибудь в другой, типа файл открыть или скопировать, и тд.
 
0
 
0
    Ответить с цитированием
Old 27-01-2009, 02:13   #9
prius
Registered User
 
Сообщений: 1,341
Проживание:
Регистрация: 08-07-2008
Status: Offline
Репутация: 0
Цитата:
Сообщение от Suhov
нормальное поведение. не глюк. чтобы реализовать драг_и_дроп, если этого хочется, должна быть поддержка со стороны ос. одной явы недостаточно. но для кнопок я даже юзкейс сходу не могу придумать что на них можно кидать, чтобы они хавали. обычно из одного контейнера перекидывают что нибудь в другой, типа файл открыть или скопировать, и тд.


Узкеиз такой: есть кнопка нестандартной формы. Точнее, форма у компонента стандартная (прямоугольная), но активная зона кнопки прорисованна внутри. Отсюда и есть потребность в том, чтобы отловить момент, когда мыша доходит до интересующего места на коомпоненте. Если бы кнопка занимала весь компонент, то евенты моусеЕнтры, моусеЕхит отлавливаются очень даже хорошо. Но внутри компонента отлавливать можно только моусеМове, моусеДраг. Ну да ладно, не буду больше времени на это тратить. Может потом что-нибудь найду.
 
0
 
0
    Ответить с цитированием
Old 12-02-2009, 01:45   #10
prius
Registered User
 
Сообщений: 1,341
Проживание:
Регистрация: 08-07-2008
Status: Offline
Репутация: 0
Еще один вопрос. Вроде - ерунда, а как-то не получается.
Хочу открыть окно на весь экран, но с учетом линейки(старт). Но никак не могу выцарапать измерения свободной площади. Кто-нибудь сталкивался с такой проблемой в Линухе? Toolkit выдает всю площадь экрана и линейка накрывает низ окна.
 
0
 
0
    Ответить с цитированием
Ответ


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра Оценка этой теме
Оценка этой теме:

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

vB коды Вкл.
[IMG] код Вкл.
HTML код Выкл.



» Объявления на Doska.fi

» Галерея Финляндии

» Реклама на Doska.fi

» Реклама на Russian.fi


Часовой пояс GMT +3, время: 09:41.

Russian.fi - Финляндия по-русски © Suomitech Oy, 2002-2026 При использовании материалов с сайта указание ссылки на russian.fi обязательно