Запретить JWindow всегда оставаться наверху

Я создал JFrame и JWindow. Моя проблема в том, что когда я нажимаю на другое приложение, мое JFrame проходит за приложением, но не JWindow, которое всегда остается наверху. Я пытался позвонить setAlwaysOnTop(false) на свой JWindow, но это ничего не меняет. Я бы хотел, чтобы JWindow "следовал" за JFrame.

Вот мой тестовый код:

public class WindowAlwaysOnTop {
    public static void main(String[] args) {
        final JFrame frame = new JFrame();
        frame.setSize(new Dimension(400, 400));
        final JWindow window = new JWindow(frame);
        window.setAlwaysOnTop(false);
        window.setSize(new Dimension(200, 200));
        frame.setVisible(true);
        window.setVisible(true);
    }
}

person paranoia25    schedule 21.02.2013    source источник
comment
У меня нет особых проблем с вашим кодом.   -  person Guillaume Polet    schedule 21.02.2013
comment
@ paranoia25 Протестировал его с помощью JDK7, и у меня все прошло нормально.   -  person Lyuben Todorov    schedule 21.02.2013
comment
Спасибо! Ты прав. Работа с JDK7 вместо jre 1.6.0_32 6решает проблему   -  person paranoia25    schedule 21.02.2013


Ответы (2)


Эта проблема возникла в JRE 1.6.0_32 и решена в JDK7.

person paranoia25    schedule 21.02.2013
comment
JRE - это не среда разработки. Если вы использовали JRE, она вообще не должна работать. JDK - это то, что вам нужно. p.s. Просто запустил свой код с JDK6u40, и он работал нормально - person Lyuben Todorov; 21.02.2013
comment
Это должен быть ответ? Похоже, это должно быть изменение вопроса. - person Andrew Thompson; 21.02.2013
comment
Я могу удалить ответ и отредактировать комментарий. Без проблем. Но в этом случае я не могу отметить этот вопрос как решенный, можно? - person paranoia25; 21.02.2013

Не используйте JWindow.

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

person camickr    schedule 21.02.2013
comment
Я думаю об этом решении. Но в моем случае это не соответствует моей проблеме: у меня должно быть окно поверх фрейма, и я должен видеть фрейм через окно. И я должен отображать диалог поверх окна! И я должен быть уверен, что в этом точном порядке стека: диалог находится в верхней части окна, которое находится в верхней части фрейма ... - person paranoia25; 21.02.2013