2012-05-24 3 views
1

У меня есть нетривиальный Java-апплет. У этого есть меню, и через это меню апплет показывает диалог, который расширяет JDialog. Диалог показан с использованием setVisible(true). Когда пользователь заканчивает работу с этим диалоговым окном, диалог закрывается (после нажатия кнопки «done») с использованием this.dispose().Java-приложение/диалог странное поведение

Теперь есть странная проблема: апплет отлично работает в Firefox, даже в IE, но в Chrome, когда апплет показывает другое окно (диалоговое окно), это окно отображается за апплета. Я должен щелкнуть по месту, где должен быть диалог, чтобы показать его (довести его до фронта). Если я снова нажму на него (пока он будет показан), он снова исчезнет (перейдите на задний план). Щелчки кнопок работают как обычно, но всякий раз, когда я нажимаю на всплывающее окно (даже это заголовок), он меняет свое «видимое» состояние.

Возможно, вы поймете, что не так? Как решить эту ошибку?

ответ

4
// the applet will typically appear inside a Window, get a reference to it using: 
Window parent = Window.getWindows()[0]; 
// use the window as the parent of a modal dialog. 
JDialog dialog = new JDialog(parent); 
dialog.setModal(true); 
// ... 
dialog.setVisible(true); 
// won't be called until the applet is dismissed 
someJComponent.requestFocusInWindow(); 

Апплеты, встроенные в веб-страницы, всегда будут подвержены модальности и проблемам фокусировки. Для лучшего удобства работы запустите апплет с плавающей точкой, используя Java Web Start, или еще лучше, запустите фрейм с помощью JWS.

+0

Спасибо, но проблема не устранена ... После закрытия любого JDialog с апплетами с помощью «X» в следующий раз, когда я открою любое окно, оно будет конфисковано с фокусом. Любое решение, кроме перехода от апплетов к smthg еще? – guest86

+0

См. Последние строки кода, которые я добавил в редактировании. Почему так увлекается встроенным апплетом? –

+0

Нет, добавленный код не будет делать: \ Мне нужно использовать апплеты, потому что я поддерживаю старый и очень сложный код. Переход от апплетов потребовал бы переписать большую часть кода. – guest86

Смежные вопросы