Позиция JFrame и pack() в Awesome WM

каждый раз, когда я вызываю метод pack() в JFrame, он перемещается в исходное положение, в котором был при запуске. Когда я пытаюсь получить местоположение JFrame (getLocation, getLocationOnScreen), оно остается таким же, как исходное положение, независимо от того, перемещаю ли я окно. Я использую Archlinux с Awesome WM. Пожалуйста помоги.

Спасибо.

EDIT: Я просто хочу иметь возможность отображать или скрывать некоторые компоненты в главном окне (которые вызывают изменение размера макета), не перемещая окна в исходное положение.

EDIT2: Итак, я только что обнаружил, что Павел (из комментария) прав. В Xfce работает нормально, а в Awesome WM нет.

EDIT3: я действительно не понимаю, почему вы голосуете против вопроса. Я впервые использую функцию pack(), поэтому я не знаю, каково ее правильное поведение. В документе java API нет объяснения, изменится ли положение окна. Я просто использую это первым в Awesome WM, который я использую в качестве своего оконного менеджера, поэтому я не знаю, что он должен вести себя по-другому. Я пытался найти что-нибудь об этом в Интернете, но ничего не нашел. Я думаю, что этот вопрос может быть полезен кому-то после того, как я нашел решение. Наверняка есть другие java-разработчики, которые используют Awesome WM (или что-то подобное с той же проблемой).


person uiii    schedule 21.05.2011    source источник
comment
Похоже на проблему с оконным менеджером.   -  person Paŭlo Ebermann    schedule 22.05.2011
comment
pack() не влияет на расположение упакованной корневой панели, а только на ее размер. без дополнительной информации (фрагмент кода, который показывает проблему, ОС, версия JDK...) мы не сможем помочь.   -  person jfpoilpret    schedule 22.05.2011
comment
MByD: Я не знаю, какой код разместить. Это просто происходит, когда я вызываю pack() в любом методе моего класса, полученного из JFrame. Этот JFrame используется для главного окна приложения.   -  person uiii    schedule 22.05.2011
comment
jfpoilpret: ОС — это Achrlinux, как я упоминал в вопросе. Версия JDK в 1.6.0_25, я не знаю, какая еще информация может помочь.   -  person uiii    schedule 22.05.2011
comment
Так что я только что обнаружил, что Павел прав. В Xfce работает нормально, а в Awesome WM нет.   -  person uiii    schedule 22.05.2011


Ответы (1)


Я нашел решение! Проблема в том, что у java есть некоторые проблемы с некоторыми оконными менеджерами. Решение простое - просто установите утилиту wmname ( http://tools.suckless.org/wmname ) и запустите 'wmname LG3D'. Он изменяет фактическое имя оконного менеджера на LG3D, и java считает его совместимым с WM.

Я знаю это до моей проблемы. Итак, я пытаюсь установить глобальное имя LG3D в файле .xinitrc, но похоже, что это не работает. Я должен явно вызывать 'wmname LG3D' в каждом терминале, который будет запускать некоторые java-приложения.

person uiii    schedule 22.05.2011
comment
Если это решение вашей проблемы, отметьте его как принятый ответ. - person thomasfedb; 23.05.2011