0

私は最近 Java での開発を開始し、その経験を大いに楽しんでいます。デフォルトの Java パッケージには便利な機能が含まれており、Swing パッケージを使用すると GUI を作成するのに非常に役立ちます。シンプルで非常に柔軟だったので、LayoutManager に SpringLayout を使用することにしましたが、今ではピクルスに陥っています。

アプリケーションの状態を永続化できるようにしたいと考えています。私は Preferences API を使用してこれに取り組み始めましたが、それは Java ネイティブのストレージしか許可しません (理解できる - その目標は軽量化です)。データが詰め込まれた XML 文字列を永続化することで、Preferences の使用を粗末にしました。しばらくして、周りを見回して、もっと良いものがないかどうかを確認することにしました。それから、serializable について読み始めました。答えを見つけたように見えました。

しかし、SpringLayout によって管理されているいくつかの GUI コンポーネントを持つクラスをシリアライズしようとしたときに、シリアライズ可能を実装していないことがわかりました。キーワードの問題を回避する方法を見つけたと思いましたtransientが、SpringLayout で許可されている唯一の修飾子はfinal. 私が見た唯一の回避策は、使用している LayoutManager を変更することです...かなりカスタマイズされた GUI をいくつか作成したので、これはやりたくありません。

何か案は?

事前にすべての応答に感謝します。

-M

4

2 に答える 2

1

どういう意味

SpringLayout で許可される唯一の修飾子はfinal.

それがシリアライズ可能なオブジェクトのフィールドである場合は、一時的であると宣言できます。オブジェクト内のすべてのフィールドを制御できない場合は、State関連するすべてのデータを書き込むオブジェクトのみを永続化してみてください。レイアウト マネージャーを保持することはお勧めできません。

于 2012-08-07T20:30:54.243 に答える
0

コンストラクターに対してローカルであるSpringLayoutのインスタンスをとして宣言しようとしていましたtransient。実行する必要があるのは、これらの変数をクラス変数として宣言してから、として変更することtransientでした。

于 2012-08-09T15:33:37.710 に答える