2017-02-26 84 views
0

我正在爲具有各種功能的項目管理創建應用程序,包括保存和打開保存的文件。我的應用程序運行平穩,但我想在應用程序中添加另一個功能,這將允許它在一段時間後保存數據。將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

回答

0

像這樣的東西應該很容易使用ScheduledExecutorService實現:

ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); 
executorService.scheduleWithFixedDelay(() -> mainApp.saveUserStoryDataToFile(file), 0, 1, TimeUnit.MINUTES); 

對於節約之間一分鐘的延遲(沒有初始延遲)保存數據。

注意,使用這種方法,你需要採取一些事情的護理:

  • 同步訪問數據。
  • 防止對文件的併發訪問。
  • 確保在JavaFX平臺退出時(或之前)調用shutdown
+0

感謝您的回答。我會嘗試並讓你知道。 –