>Java >java지도 시간 >스윙 프로그램의 상태를 저장하고 다시 로드하는 방법은 무엇입니까?

스윙 프로그램의 상태를 저장하고 다시 로드하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-15 06:00:04361검색

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);
}

위 내용은 스윙 프로그램의 상태를 저장하고 다시 로드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.