Saving and Reloading Swing Program State
To preserve and retrieve the state of your Swing program, several approaches are available:
Properties API:
The Properties API offers a key-value pair storage mechanism. You can save and load data easily. However, only strings are supported, so non-string values require manual conversion.
Properties properties = new Properties(); properties.setProperty("cell_data", board.getCellDataAsString()); properties.store(new FileOutputStream("game.properties"), "Game Properties");
XML and JAXB:
JAXB allows you to map object properties to XML and export/import them. While more flexible than Properties, it introduces complexity.
JAXBContext context = JAXBContext.newInstance(Board.class); Marshaller marshaller = context.createMarshaller(); marshaller.marshal(board, new FileOutputStream("game.xml"));
Preferences API:
The Preferences API supports storing String and primitive values without conversion. It automatically loads and stores content, but its location is not under your control.
Preferences prefs = Preferences.userRoot().node("minesweeper"); prefs.put("cell_data", board.getCellDataAsString());
Database:
Embedded databases like H2 or HSQLDB offer basic storage. However, they can be more complex to set up and maintain than other options, especially for small amounts of data.
try (Connection connection = DriverManager.getConnection("jdbc:h2:~/minesweeper")) { try (Statement statement = connection.createStatement()) { statement.execute("INSERT INTO cells (data) VALUES ('" + board.getCellDataAsString() + "')"); } }
Object Serialization:
Consider using object serialization as a last resort. It's not designed for long-term storage and comes with potential issues.
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("game.ser"))) { oos.writeObject(board); }
Atas ialah kandungan terperinci Bagaimana untuk Simpan dan Muat Semula Keadaan Program Swing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!