В своем приложении я на основе JPanel реализую различные диалоговые окошки (с кнопочками, текстовыми полями и т.п.). Так вот, если одно такое диалоговое окошко перекрывает другое, ниже лежащее, то сквозь него (верхнее), мышь реагирует на элементы нижнего, и они, элементы, проявляются сквозь верхнее. Можно как-нибудь избавиться от такого поведения?
Здравствуйте, mihauzen, Вы писали:
M>В своем приложении я на основе JPanel реализую различные диалоговые окошки (с кнопочками, текстовыми полями и т.п.). Так вот, если одно такое диалоговое окошко перекрывает другое, ниже лежащее, то сквозь него (верхнее), мышь реагирует на элементы нижнего, и они, элементы, проявляются сквозь верхнее. Можно как-нибудь избавиться от такого поведения?
Не очень понятно что ты делаешь. Свою реализацию MDI? Почему не на JInternalFrame/JDesktopPane?
И отукда мы можем знать что-там к чему в твоей реализации если ты никаких деталей не рассказал?
Re[2]: "мышиная прозрачность" в JPanel: как убрать?
Здравствуйте, Blazkowicz, Вы писали:
B>Не очень понятно что ты делаешь. Свою реализацию MDI? Почему не на JInternalFrame/JDesktopPane?
B>И отукда мы можем знать что-там к чему в твоей реализации если ты никаких деталей не рассказал?
Попробую еще раз.
Я а основе JPanel создаю аля диалоговые окна. Почему не на JInternalFrame/JDesktopPane? Отвечаю — мне важен внешний вид этого диалогового окна. Что бы изменить внешний вид у JInternalFrame/JDesktopPane нужно лопатить их лук_энд_фил, что не оч хоцца. А так я с помощью картинок создаю необходимый тайтл, фон основного диалога, виды кнопачек. Получается что-то вроде вот такого:
С прозрачность, тенью — вобщем лук_энд_фил то что надо .
Диалог выводится в нужном месте в нужное время(аддится в рабочий контейнер). И если или с помощью таскания или как-нибудь еще, но под таким диалого окажется какой-нибудь элемент типа кнопки, вообщем, требующий реакцию мыши, то он ее получает сквозь диалоговое окно, чего в идеале быть не должно. JPanel — это не окно и я это понимаю, но вот что переопределить или каким другим образом отобрать эту "прозрачность на мышиные действия" я не наю.
Какие еще детали реализауии нужны — не наю. В качестве примера: взять один пэнл и влепить на него кнопку, взять другой пенл и расположить так, что бы он перекрывал кнопку первого пенэла (оба пенела аддютться в один контейнер), посмотреть что будет.
...все это временно... (с) Айэм
Re[3]: "мышиная прозрачность" в JPanel: как убрать?
M>Попробую еще раз. M>Я а основе JPanel создаю аля диалоговые окна. Почему не на JInternalFrame/JDesktopPane? Отвечаю — мне важен внешний вид этого диалогового окна. Что бы изменить внешний вид у JInternalFrame/JDesktopPane нужно лопатить их лук_энд_фил, что не оч хоцца.
Пагубным путём идешь, товаришь!
Ну, да ладно. Попробуй в качестве теста на эти свои панели повешать MouseListener. Если поможет, можно сделать один экземпляр MouseAdapter на все панели. Но вообще это хак...
Re[4]: "мышиная прозрачность" в JPanel: как убрать?
B>Пагубным путём идешь, товаришь! B>Ну, да ладно. Попробуй в качестве теста на эти свои панели повешать MouseListener. Если поможет, можно сделать один экземпляр MouseAdapter на все панели. Но вообще это хак...
Ну так, а как по другому?
Разве реально то, что я опказал на картинке, кодом сделать??? Не, нереального для программиста ничего нет,но время — это раз, да и сложно — это два.
А что пагубного то?
...все это временно... (с) Айэм
Re[5]: "мышиная прозрачность" в JPanel: как убрать?
Здравствуйте, mihauzen, Вы писали:
B>>Пагубным путём идешь, товаришь! B>>Ну, да ладно. Попробуй в качестве теста на эти свои панели повешать MouseListener. Если поможет, можно сделать один экземпляр MouseAdapter на все панели. Но вообще это хак...
M>Ну так, а как по другому? M>Разве реально то, что я опказал на картинке, кодом сделать??? Не, нереального для программиста ничего нет,но время — это раз, да и сложно — это два. M>А что пагубного то?
Ну, отход от концепции... 8)
А по второму вопросу что-нибудь будет? Пробовал? Получилось\нет?
Здравствуйте, mihauzen, Вы писали:
M>Всем приветы!!!
M>В своем приложении я на основе JPanel реализую различные диалоговые окошки (с кнопочками, текстовыми полями и т.п.). Так вот, если одно такое диалоговое окошко перекрывает другое, ниже лежащее, то сквозь него (верхнее), мышь реагирует на элементы нижнего, и они, элементы, проявляются сквозь верхнее. Можно как-нибудь избавиться от такого поведения?
У меня както возникала подобная проблемма, только поверх модальных (т.е. которые могут получать фокус) элементов интерфейса нужно было разместить ScrollPane.
Из этой ситуации я вышел добавив скролпане, используя метод add() в первую (или нулевую позицию) z-последовательности.
код выгледит следующим образом:
Здравствуйте, Blazkowicz, Вы писали:
B>Ну, отход от концепции... 8)
Что за концепция такая? Почему я о ней не знаю?
B>А по второму вопросу что-нибудь будет? Пробовал? Получилось\нет?
Имплементил MouseListener — не помогло.
...все это временно... (с) Айэм
Re[2]: "мышиная прозрачность" в JPanel: как убрать?
Здравствуйте, Paulpa, Вы писали:
P>У меня както возникала подобная проблемма, только поверх модальных (т.е. которые могут получать фокус) элементов интерфейса нужно было разместить ScrollPane. P>Из этой ситуации я вышел добавив скролпане, используя метод add() в первую (или нулевую позицию) z-последовательности. P>код выгледит следующим образом:
P>
Бррр...что-то не совсем понял, куда его добавлять: в нулевую позицию моего диалогового окшка или в нулевую позицию контейнера, куда вставляется диалоговое окошко?
...все это временно... (с) Айэм
Re[3]: "мышиная прозрачность" в JPanel: как убрать?
Здравствуйте, mihauzen, Вы писали:
P>>У меня както возникала подобная проблемма, только поверх модальных (т.е. которые могут получать фокус) элементов интерфейса нужно было разместить ScrollPane. P>>Из этой ситуации я вышел добавив скролпане, используя метод add() в первую (или нулевую позицию) z-последовательности.
M>Бррр...что-то не совсем понял, куда его добавлять: в нулевую позицию моего диалогового окшка или в нулевую позицию контейнера, куда вставляется диалоговое окошко?
В нулевую позицию контейнера, который содержит элементы интерфейса диалогового окна.
Желтая карточка за оверквотинг поскипаный модератором. Blazkowicz.
Re[7]: "мышиная прозрачность" в JPanel: как убрать?
Здравствуйте, mihauzen, Вы писали:
B>>Ну, отход от концепции... 8) M>Что за концепция такая? Почему я о ней не знаю?
Ну, L&F, Swing MVC, в общем не будь таким серьёзным, я ж там смайлик поставил...
B>>А по второму вопросу что-нибудь будет? Пробовал? Получилось\нет? M>Имплементил MouseListener — не помогло.
Тогда присылай код. Я набросал у себя примерчик. Если кликаешь по панели, а под ней кнопка, то событие передаётся в кнопку. Потому что Component.eventEnabled для панели возвращает false. А false возвращает потому что ниодин MouseListener у неё не зарегестрирован. И поэтому событие панелью не ловится и уходит в кнопку. Еже ли на панель повесить MouseListener? То eventEnabled вернет true. Событие будет обработано панелью и в кнопку уже не пойдёт.
Повесь слушателя на панель и на кнопку под ней. И скажи не уже ли слушатель отработает для обоих компанент???
Кстати, о какой версии JDK мы говорим? Хотя мне кажется что разницы не должно быть.
Re[8]: "мышиная прозрачность" в JPanel: как убрать?
Здравствуйте, Blazkowicz, Вы писали:
B>Тогда присылай код. Я набросал у себя примерчик. Если кликаешь по панели, а под ней кнопка, то событие передаётся в кнопку. Потому что Component.eventEnabled для панели возвращает false. А false возвращает потому что ниодин MouseListener у неё не зарегестрирован. И поэтому событие панелью не ловится и уходит в кнопку. Еже ли на панель повесить MouseListener? То eventEnabled вернет true. Событие будет обработано панелью и в кнопку уже не пойдёт.
B>Повесь слушателя на панель и на кнопку под ней. И скажи не уже ли слушатель отработает для обоих компанент???
B>Кстати, о какой версии JDK мы говорим? Хотя мне кажется что разницы не должно быть.
Сорри, я это...малость всего забыл...addMouseListener(this);
Теперь все как надо
Спасибо.
А теперь вернемся к концепции — об чем речь? Это типа правил хорошего тона? Просто, хочется знать, что имелось ввиду, и почему я об этом в первые слышу
...все это временно... (с) Айэм
Re[4]: "мышиная прозрачность" в JPanel: как убрать?
Здравствуйте, Paulpa, Вы писали:
P>В нулевую позицию контейнера, который содержит элементы интерфейса диалогового окна.
Спасибо, используя хак уже все получилось.
...все это временно... (с) Айэм
Re[3]: "мышиная прозрачность" в JPanel: как убрать?
Здравствуйте, mihauzen, Вы писали:
M>Я а основе JPanel создаю аля диалоговые окна. Почему не на JInternalFrame/JDesktopPane? Отвечаю — мне важен внешний вид этого диалогового окна. Что бы изменить внешний вид у JInternalFrame/JDesktopPane нужно лопатить их лук_энд_фил, что не оч хоцца. А так я с помощью картинок создаю необходимый тайтл, фон основного диалога, виды кнопачек.
Может в твоем случае имеет смысл использовать JWindow, а не JPanel? Выглядеть будет так,как ты захочешь (в качестве content pane вешаешь свою навороченную панель). Правда насчет прозрачности ничего не скажу — насколько помню, довольно сложно ее там сделать. Зато куча проблем, идущих от JPanel, сразу снимется (твоя проблема, фокус не надо контролировать и т.д. и т.п.).
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: "мышиная прозрачность" в JPanel: как убрать?
Здравствуйте, ReD_Lukas, Вы писали:
RD_>Может в твоем случае имеет смысл использовать JWindow, а не JPanel? Выглядеть будет так,как ты захочешь (в качестве content pane вешаешь свою навороченную панель). Правда насчет прозрачности ничего не скажу — насколько помню, довольно сложно ее там сделать. Зато куча проблем, идущих от JPanel, сразу снимется (твоя проблема, фокус не надо контролировать и т.д. и т.п.).
Да, метода сетОпакьу у него нету, а без прозрачности уже совершенно не тот вид. Но идея интересная. Спасибо.
А на счет фокуса, модальности — да, имеемс такой проблем, но, т.к. все приложение синхронизируется одним диспетчером, то в дальнейшем (пока это еще не реализоано), думаю, эти проблемя уйдут. И оч. хоцца верить, что не появится новых .