Maison >Java >javaDidacticiel >Comment sauvegarder et recharger l'état d'un programme Swing ?
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!