setAlwaysOnTop(true)
решает одну проблему, но создает другую, а именно то, что теперь пользователь не может отправить окно назад.
Мое решение - хак:
В WindowListener, прикрепленном к JFrame, поместите этот код:
@Override
public void windowDeactivated(WindowEvent e)
{
if(firstToBack) //firstToBack is an bloolean instance variable initialized to true
{
final JFrame f = frame;
new Thread() { public void run() {
try { Thread.sleep(300); } catch(InterruptedException ie) {}
f.toFront();
}}.start();
firstToBack = false;
}
}
Это в основном запускает новый поток в первый раз, который немного ждет, а затем вызывает JFrame вперед. Он выполняется только один раз, поэтому кадр не продолжает поступать вперед, каждый раз, когда пользователь отправляет его обратно. 300 миллисекунд - это произвольное количество времени и, возможно, даже не обязательно.
Возможно, кто-то может сказать мне, почему это работает, но когда тот же тип потока был запущен из метода init () апплета, окно все равно ушло назад, после завершения потока?