Swing Application Framework не сохраняет сессию программы (размещение окна, размер и т. Д.) В Linux

Я занимаюсь разработкой крошечного приложения на Java с использованием Swing и Swing Application Framework (JSR 296). Должно работать под Windows и Linux.

В Windows XP сессия (оконная позиция, размер и т. Д.) Сохраняется, а в Linux - нет! Программа расширяет SingleFrameApplication. Это должно сохранить положение окна автоматически. Никакого дополнительного кода для этого не написано. Я проследил источники фреймворка, но не нашел ничего плохого. Хранилище сессий должно сохранять состояние окна в.MyApp dir в домашней папке. Файла там нету У меня есть некоторые пользовательские параметры, которые я сохраняю в xml вручную, используя свойства java, а не хранилище сессий! Этот файл без проблем сохраняется в папке.MyApp в домашней папке!

Кто-нибудь знает, почему программа не сохраняет свое состояние в Linux, но в Windows это делает?

РЕШЕНО: Причина в том, что OpenJDK несовместим с SAF. После того, как я удалил OpenJDK и установил JDK из Oracle, окна стали сохранять и восстанавливать их позиции и размеры.

2 ответа

Прежде всего, существует активное сообщество вокруг Better Swing Application Framework. () Может быть полезно отправить ваш вопрос туда, или, что еще лучше, создать новый тикер для отслеживания проблем с полным определением вашей среды и выдержек из вашего кода.

В то же время попробуйте использовать ваше приложение с SUN/Oracle JRE/JDK 6. Поскольку SAF не тестируется на Open JDK, и у него есть проблема с JDK7. (Различная реализация XMLEncoder/XMLDecoder).

Я надеюсь, что это было полезно.

Linux использует свой собственный WindowManager, поэтому решение о том, куда направить окно, зависит от ОС. Если вы хотите переопределить его, вам нужно сохранить размер и расположение окна в Properties Объект и положить его куда-нибудь, когда вы выходите, загружая его снова, когда вы перезапустите. Или вы можете просто позвонить setLocationRelativeTo(null) чтобы окно всегда было в центре экрана.

Если вы уже используете свойства, но не сохраняете то, что ожидали, вам может потребоваться его отладка или проверка переменных среды.

Другие вопросы по тегам