ホームページ >Java >&#&チュートリアル >Swing プログラムの状態を保存して再ロードするにはどうすればよいですか?

Swing プログラムの状態を保存して再ロードするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-15 06:00:04360ブラウズ

How to Save and Reload the State of a Swing Program?

Swing プログラムの状態の保存と再ロード

Swing プログラムの状態を保存および取得するには、いくつかの方法が使用できます。

プロパティ API:

プロパティ API は、キーと値のペアの保存メカニズムを提供します。データの保存や読み込みも簡単に行えます。ただし、文字列のみがサポートされているため、文字列以外の値は手動で変換する必要があります。

Properties properties = new Properties();
properties.setProperty("cell_data", board.getCellDataAsString());
properties.store(new FileOutputStream("game.properties"), "Game Properties");

XML と JAXB:

JAXB を使用すると、オブジェクト プロパティを XML にマップできます。そしてそれらをエクスポート/インポートします。プロパティよりも柔軟ですが、複雑になります。

JAXBContext context = JAXBContext.newInstance(Board.class);
Marshaller marshaller = context.createMarshaller();
marshaller.marshal(board, new FileOutputStream("game.xml"));

Preferences API:

Preferences API は、文字列値とプリミティブ値を変換せずに保存することをサポートします。コンテンツは自動的にロードおよび保存されますが、その場所は制御できません。

Preferences prefs = Preferences.userRoot().node("minesweeper");
prefs.put("cell_data", board.getCellDataAsString());

データベース:

H2 や HSQLDB などの組み込みデータベースは、基本的なストレージを提供します。ただし、特に少量のデータの場合、他のオプションよりも設定と保守が複雑になる可能性があります。

try (Connection connection = DriverManager.getConnection("jdbc:h2:~/minesweeper")) {
  try (Statement statement = connection.createStatement()) {
    statement.execute("INSERT INTO cells (data) VALUES ('" + board.getCellDataAsString() + "')");
  }
}

オブジェクトのシリアル化:

オブジェクトの使用を検討してください。最後の手段として連載化。長期保管用に設計されていないため、潜在的な問題が発生します。

try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("game.ser"))) {
  oos.writeObject(board);
}

以上がSwing プログラムの状態を保存して再ロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。