Maison >Java >javaDidacticiel >Comment sauvegarder et recharger l'état d'un programme Swing ?

Comment sauvegarder et recharger l'état d'un programme Swing ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-15 06:00:04363parcourir

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

Sauvegarde et rechargement de l'état du programme Swing

Pour conserver et récupérer l'état de votre programme Swing, plusieurs approches sont disponibles :

API Propriétés :

L'API Propriétés offre un mécanisme de stockage de paires clé-valeur. Vous pouvez enregistrer et charger des données facilement. Cependant, seules les chaînes sont prises en charge, donc les valeurs non-chaînes nécessitent une conversion manuelle.

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

XML et JAXB :

JAXB vous permet de mapper les propriétés d'un objet en XML. et exportez-les/importez-les. Bien que plus flexible que les propriétés, elle introduit de la complexité.

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

API Préférences :

L'API Préférences prend en charge le stockage des chaînes et des valeurs primitives sans conversion. Il charge et stocke automatiquement le contenu, mais son emplacement n'est pas sous votre contrôle.

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

Base de données :

Les bases de données intégrées comme H2 ou HSQLDB offrent un stockage de base. Cependant, ils peuvent être plus complexes à configurer et à maintenir que d'autres options, en particulier pour de petites quantités de données.

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

Sérialisation d'objet :

Envisagez d'utiliser un objet la sérialisation en dernier recours. Il n'est pas conçu pour un stockage à long terme et comporte des problèmes potentiels.

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn