2011-03-25 2 views
2

스윙 및 스윙 응용 프로그램 프레임 워크 (JSR 296)를 사용하여 Java로 작은 응용 프로그램을 개발하고 있습니다. Windows 및 Linux에서 작동해야합니다.스윙 응용 프로그램 프레임 워크는 프로그램 세션 (창 위치, 크기 등)을 Linux에 저장하지 않습니다.

Windows XP 세션 (창 게시, 크기 등)은 저장되지만 Linux에서는 그렇지 않습니다! 프로그램이 SingleFrameApplication을 확장합니다. 자동으로 창 위치를 저장해야합니다. 추가 코드는 작성되지 않았습니다. 프레임 워크 소스를 추적했지만 잘못된 점은 발견하지 못했습니다. 세션 저장소는 창 상태를 홈 폴더의 .MyApp 디렉토리에 저장해야합니다. 파일이 없습니다. 세션 속성이 아닌 java 속성을 사용하여 xml에 수동으로 저장하는 사용자 매개 변수가 있습니다! 이 파일은 홈 폴더의 .MyApp 디렉토리에 아무 문제없이 저장됩니다!

누구도 프로그램이 Linux에서 상태를 저장하지 않는 이유를 알고 있습니까? 그렇지만 Windows에서는 어떻게됩니까?

해결 : 이유는 OpenJDK가 SAF와 호환되지 않기 때문입니다. OpenJDK를 제거하고 Oracle 창에서 JDK를 설치 한 후 &을 저장하면 해당 위치와 크기가 복원됩니다.

+0

왜'java.util.prefs.Preferences'를 사용하지 않습니까? –

+0

Swing Application Framework는 자동으로 세션을 저장하기 때문에. 수동으로 저장하는 것은 작업입니다. – Exterminator13

+1

먼저 BSAF로 전환하는 것이 좋습니다. 지원되는 BSAF입니다 (SAF는 몇 년 동안 활동하지 않았습니다). 이것은 세션 저장소 디렉토리에 대한 권한 문제입니다. – jfpoilpret

답변

0

Linux는 고유 한 WindowManager를 사용하므로, OS가 창 위치를 결정합니다. 이를 덮어 쓰려면 창 크기와 위치를 Properties 개체에 저장하고 종료 할 때 어딘가에 넣어야합니다. 다시 시작할 때 다시로드해야합니다. 또는 setLocationRelativeTo(null)으로 전화를 걸어 화면의 중앙에 항상 창을 표시 할 수 있습니다.

이미 속성을 사용하고 있지만 예상 한 곳을 저장하지 않는 경우 디버그하거나 환경 변수를 확인해야 할 수 있습니다.

1

먼저 Better Swing Application Framework를 중심으로 활동적인 커뮤니티가 있습니다.() 당신의 질문을 거기에 보내거나, 당신의 환경에 대한 완전한 정의와 당신의 코드 추출물로 이슈 추적기에 새로운 티켓을 만드는 것이 도움이 될 수 있습니다.

SUN/Oracle JRE/JDK 6을 사용하여 응용 프로그램을 사용하십시오. SAF는 Open JDK에서 테스트되지 않았으므로 JDK7에 문제가 있습니다. (XMLEncoder/XMLDecoder의 다른 구현).

도움이 되었기를 바랍니다.

관련 문제