Вернуться   Финляндия по-русски » Жизнь в Финляндии » 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 12-02-2009, 01:45   #9
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, время: 13:26.

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