Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Модальный диалог 
:(
    Опции темы
TrivialCore
Дата 4.11.2004, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 1
Всего: 5



Суть проблемы следующая. Есть апплет, который при нажатии выполняет нечто, и это длится некоторое время, после чего в конце выскакивает модальный диалог, чтобы юзер подтвердил нажатием на "ОК". Так как операция длится дольше чем пару секунд, логично, что юзер на это время может переключиться на другое окно, чтобы не тратить время.

Но после того, как операция закончена, при переключении юзера на окно с апплетом модальный диалог не высвечивается, хотя он есть и (что свойственно модальным окнам) блокирует работу главного окна. В результате юзер не может сделать ничего и остается в глубоких непонятках.

Вопрос: как сделать, чтобы мой модальный диалог был видим при переключении/фокусе на браузер с апплетом?

Надеюсь, что понятно обьяснил. Если нет, могу еще раз постарат;ся.
PM MAIL   Вверх
TrivialCore
Дата 4.11.2004, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 1
Всего: 5



П.С. Какое же это веб-программирование? Если уж перемещать, то я бы переместил тему в GUI, т.к. это AWT/Swing-овая тема.
PM MAIL   Вверх
LSD
Дата 4.11.2004, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



В обычном приложении эта проблема решается, установкой родительского фрейма. Правда как поступить с апплетом, не знаю.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Domestic Cat
Дата 4.11.2004, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: нет
Всего: 172



Видимо никак, апплет веть в сандбоксе. Пока апплет это что-то делает, покажи юзеру чего-нибудь,
тот же модальный диалог, но с прогресс баром.


--------------------

PM   Вверх
TrivialCore
Дата 5.11.2004, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 1
Всего: 5



Цитата(Domestic @ 4.11.2004, 21:08)
Пока апплет это что-то делает, покажи юзеру чего-нибудь,
тот же модальный диалог, но с прогресс баром.
Так ведь проблема именно в модальном диалоге. Т.е., если юзер переключается на другое окно, а потом обратно на браузер с апплетом, то модальное окно ему уже не показывается! Но оно все еще есть и блокирует действия юзера.

Цитата(LSD @ 4.11.2004, 19:44)
В обычном приложении эта проблема решается, установкой родительского фрейма

Точно, можно указать родительский фрейм, но как его указать при его отсутствии (т.е. при отсутствии фреймов). Конечно, можно положить на апплет фрейм, которого единственной целью будет быть родителем для диалога, но - коряво! Родителем также может быть другой диалог, но тут та же проблема.

PM MAIL   Вверх
Alt
Дата 5.11.2004, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 23.8.2004

Репутация: 1
Всего: 2



Можно попробовать так:

Код

public class Test extends Applet {

  public Frame getAppletFrame() {
       java.awt.Container container = this.getParent();
        while(container!=null){
            if(container instanceof Frame){
                return  (Frame)container;
            }
            container = container.getParent();
        }
        return null;
   }

}

PM MAIL   Вверх
polosatij
  Дата 10.11.2004, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: нет
Всего: 8



Цитата
Но после того, как операция закончена, при переключении юзера на окно с апплетом модальный диалог не высвечивается, хотя он есть и (что свойственно модальным окнам) блокирует работу главного окна. В результате юзер не может сделать ничего и остается в глубоких непонятках.


eto proishodit tol'ko v tom sluchae, esli u Dialog-a v konstruktore zadan true, to est'.. user OBJAZAN chto-libo sdelat' v Dialog-e..

Цитата
Вопрос: как сделать, чтобы мой модальный диалог был видим при переключении/фокусе на браузер с апплетом?


smile prosto: delaesh:

Код

 Canvas canvas = new Canvas(){
   public void paint(Graphics g){
     if (dialogDolzhenByt'Pokazan) {dialog.show();} //gde, boolean dialogDolzhenByt'Pokazan, dialog <- ssylka na tvoj klass Dialog
   }
 }



iiii.. smile
paint budet vsegda vyzyvat'sja, kogda user perekljuchaet okno (to est' delaet tvoj applett activnym)
udachi smile



--------------------
PM   Вверх
TrivialCore
Дата 14.11.2004, 02:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 1
Всего: 5



Звучит заманчиво, в понедельник попробую =)
PM MAIL   Вверх
TrivialCore
Дата 25.11.2004, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 1
Всего: 5



Вот только дело в том, что в самом апплете я не имею указателя на диалог, т.к. он создается вообще далеко от ГУИ - через интерфейс...
PM MAIL   Вверх
LSD
Дата 25.11.2004, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(TrivialCore @ 25.11.2004, 18:47)
Вот только дело в том, что в самом апплете я не имею указателя на диалог, т.к. он создается вообще далеко от ГУИ - через интерфейс...

Код
Frame.getFrames()

А там найдешь свой smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
TrivialCore
Дата 26.11.2004, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 1
Всего: 5



Проблема в том, что диалог - это не фрейм, а аналога для диалогов или окон я найти не могу...
PM MAIL   Вверх
AntonSaburov
Дата 26.11.2004, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 2
Всего: 118



Занятная задачка - надо поразмыслить на досуге. Ты только с форума не убегай быстро - вдруг решение аж через неделю придет smile
PM MAIL WWW ICQ   Вверх
TrivialCore
Дата 26.11.2004, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 1
Всего: 5



Цитата(TrivialCore @ 5.11.2004, 15:51)
Конечно, можно положить на апплет фрейм, которого единственной целью будет быть родителем для диалога, но - коряво
Кстати, я решил сделать так, т.е. положить на апплет фрейм, чтобы он был родителем для всех диалогов, но!
Цитата
java.lang.IllegalArgumentException: adding a window to a container

=((

Добавлено @ 13:18
Цитата(AntonSaburov @ 26.11.2004, 12:55)
Ты только с форума не убегай быстро - вдруг решение аж через неделю придет
Я никуда убегать не собираюсь... хотя с этим приложением по идее сегодня бета-релиз выпустить уже договорился. Немного глупо с таким багом, но что ж поделаешь. Так что все еще жду вашей помощи smile

PM MAIL   Вверх
Domestic Cat
Дата 26.11.2004, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: нет
Всего: 172



Цитата
Кстати, я решил сделать так, т.е. положить на апплет фрейм, чтобы он был родителем для всех диалогов, но!


а если фрейм никуда нe добавлять а просто держать ссылку на него?


--------------------

PM   Вверх
TrivialCore
Дата 26.11.2004, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 1
Всего: 5



Дело в том, что это работает следующим образом (я так думаю):
Родитель для диалога нужен для того, чтобы определять, нужно ли высвечивать диалог. Когда все было спрятано, а потом родитель стал видимым (фокус на браузере), то также шлется сообщение диалогу - показаться. Если у диалога родителя нет, то соответственно и сообщение не шлется, диалог не отображается.
И также если родителем будет некий фрейм, которого нет на апплете, то и его отображение/неотображение не будет связано с видимостью апплета/браузера.

Я так себе это представляю. Если у кого есть более достоверное инфо, то милости прошу описать.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Апплеты | Следующая тема »


 




[ Время генерации скрипта: 0.0865 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.