2

Swing と Swing Application Framework (JSR 296) を使用して、Java で小さなアプリを開発しています。Windows と Linux で動作するはずです。

Windows XP ではセッション (ウィンドウの位置、サイズなど) が保存されますが、Linux では保存されません! プログラムは、SingleFrameApplication を拡張します。ウィンドウの位置を自動的に保存する必要があります。そのための追加のコードは作成されていません。フレームワークのソースをトレースしましたが、問題は見つかりませんでした。セッション ストレージは、ウィンドウの状態をホーム フォルダーの .MyApp dir に保存する必要があります。ファイルはそこにありません。セッションストレージではなく、Javaプロパティを使用して手動でxmlに保存するいくつかのユーザーパラメーターがあります! このファイルは、ホーム フォルダーの .MyApp dir に問題なく保存されます。

Linux ではプログラムが状態を保存しないのに、Windows では保存する理由を知っている人はいますか?

解決済み:その理由は、OpenJDK が SAF と互換性がないためです。OpenJDK を削除し、Oracle Windows から JDK をインストールした後、それらの位置と寸法を保存して復元するようになりました。

4

2 に答える 2

1

まず、Better Swing Application Framework に関する活発なコミュニティがあります。() そこに質問を送信するか、問題トラッカーで環境の完全な定義とコードの抜粋を含む新しいチケットを作成することをお勧めします。

それまでの間、SUN/Oracle JRE/JDK 6 でアプリケーションを使用してみてください。SAF は Open JDK でテストされておらず、JDK7 に問題があるためです。(XMLEncoder/XMLDecoder の異なる実装)。

お役に立てば幸いです。

于 2011-03-25T19:07:31.677 に答える
0

Linux は独自の WindowManager を使用するため、ウィンドウの移動先を決定するのは OS 次第です。オーバーライドしたい場合は、ウィンドウのサイズと位置をPropertiesオブジェクトに保存し、終了時にどこかに配置し、再起動時に再度ロードする必要があります。または、単純に呼び出しsetLocationRelativeTo(null)て、常にウィンドウを画面の中央に配置することもできます。

既にプロパティを使用しているが、期待した場所に保存されない場合は、デバッグするか、環境変数を確認する必要がある場合があります。

于 2011-03-25T17:47:23.847 に答える