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

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

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

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 までご連絡ください。