使用javafx应用自动保存功能

时间:2017-02-26 18:12:05

标签: javafx

我正在创建一个项目管理应用程序,它具有各种功能,包括保存和打开保存的文件。我的应用程序运行顺利,但我想在应用程序中添加另一个功能,以便在一段时间后保存数据。

这是我保存和保存为函数的代码。

 @FXML
private void handleSave() {
    File userstoryFile = mainApp.getUserStoryFilePath();
    if (userstoryFile != null) {
        mainApp.saveUserStoryDataToFile(userstoryFile);
    } else {
        handleSaveAs();
    }
}

/**
 * Opens a FileChooser to let the user select a file to save to.
 */
@FXML
private void handleSaveAs() {
    FileChooser fileChooser = new FileChooser();

    // Set extension filter
    FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter(
            "XML files (*.xml)", "*.xml");
    fileChooser.getExtensionFilters().add(extFilter);

    // Show save file dialog
    File file = fileChooser.showSaveDialog(mainApp.getPrimaryStage());

    if (file != null) {
        // Make sure it has the correct extension
        if (!file.getPath().endsWith(".xml")) {
            file = new File(file.getPath() + ".xml");
        }
        mainApp.saveUserStoryDataToFile(file);
    }
}

是否可以在此处添加自动保存功能(使用定时器功能)?如果有,怎么样?

click here to get complete application code

1 个答案:

答案 0 :(得分:0)

使用ScheduledExecutorService

可以很容易地实现这样的功能
ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleWithFixedDelay(() -> mainApp.saveUserStoryDataToFile(file), 0, 1, TimeUnit.MINUTES);

用于保存数据,保存之间延迟一分钟(无初始延迟)。

请注意,使用此方法需要注意以下几点:

  • 同步对数据的访问权。
  • 阻止对文件的并发访问。
  • 确保在JavaFX平台退出时(或之前)调用shutdown