Я создаю JWindow в своем апплете, чтобы отобразить процесс обновления, и устанавливаю владельца родительского апплета. Моя проблема в том, что JWindow отображается на всех вкладках моего браузера, а не только на той, которая содержит мой апплет. Можно ли добавить прослушиватель, чтобы знать, когда мой апплет виден? (А затем скрыть JWindow, когда это не так)
Скрыть JWindow, когда апплет не виден?
comment
просто вопрос, убедитесь, что есть JApplet, а не Applet, не так ли?
- person mKorbel   schedule 12.09.2011
Ответы (2)
Апплеты добавляются в системный фрейм, когда они отображаются, поэтому вы можете использовать WindowListener. Я добавил следующий код в метод init() JApplet:
Window window = SwingUtilities.windowForComponent(this);
window.addWindowListener( new WindowAdapter()
{
@Override
public void windowActivated(WindowEvent e)
{
displayWindow.setVisible( true );
}
@Override
public void windowDeactivated(WindowEvent e)
{
displayWindow.setVisible( false );
}
});
person
camickr
schedule
13.09.2011
Спасибо! Работает почти идеально. После того, как я переключился с другой вкладки, мне нужно нажать на апплет, чтобы активировать его...
- person thomas.fogh; 13.09.2011
Итак, ваш первоначальный вопрос решен, и вы должны принять ответ. В приведенном выше примере
window
относится к окну, содержащему апплет. Возможно, вы можете запросить фокус на окне в методе windowActivated.
- person camickr; 13.09.2011
И сделать новое шоу jWindow, когда апплет виден? ;) Нет смысла запрашивать фокус при вызове windowActived, так как проблема в том, что он не вызывается до тех пор, пока апплет не получит фокус...
- person thomas.fogh; 14.09.2011
Я не особо разбираюсь в апплетах, но я думаю, что для этого и нужны методы start()
и stop()
. Вы должны сделать окно видимым в start() и скрыть окно в stop().
person
camickr
schedule
12.09.2011
как я правильно понял JWindow все еще onFront(), даже он переключился (например FirefoxMozilla) на вкладку другого браузера
- person mKorbel; 12.09.2011
Я только что попытался использовать функции запуска / остановки. Они не вызываются, когда я переключаюсь между вкладками...
- person thomas.fogh; 12.09.2011
Хм, я сделал тест, используя appletviewer. Когда я сворачиваю/восстанавливаю кадр, вызываются методы start/stop. Однако, когда я попытался запустить апплет в IE, а затем свернуть/восстановить IE, ничего не произошло, поэтому я не понимаю цели этих методов.
- person camickr; 13.09.2011