2015-11-17 2 views
0

У меня есть приложение JavaFX, использующее JRE1.8.0 u40. Я преобразовал Swing JFileChooser Open и Save в новое диалоговое окно JavaFX FileChooser Open and Save, Windows7. Но я не нашел эквивалентный метод JavaFX FileChooser заменить метод JFileChooser я использую для удаления файла (ов), как показано ниже:Удаление файла (ов) через FileChooser?

public static void deleteFile() throws IOException { 

    JFileChooser fileDialog = new JFileChooser("C:\\ProgramData\\L1 Art Files\\"); 
    File[] selectedFiles; 
    fileDialog.setSelectedFiles(null); 
    // Set frame properties 
    fileDialog.setDialogTitle("Delete Pixel Art File(s)"); 
    //fileDialog.setLayout(new FlowLayout()); 
    fileDialog.setSize(400, 400); 
    fileDialog.setVisible(true); 
    fileDialog.setMultiSelectionEnabled(true); // Allow multiple selection 
    fileDialog.setVisible(true); 
    int option = fileDialog.showDialog(null, "Delete"); 
    if (option != JFileChooser.APPROVE_OPTION) 
     return;         //user canceled the 
    selectedFiles = fileDialog.getSelectedFiles(); 
    if (selectedFiles != null) {   //ask the user to replace this file 
     int response = JOptionPane.showConfirmDialog(null, "Are you sure want to delete this file?", 
       "Confirm Delete", 
       JOptionPane.YES_NO_OPTION, 
       JOptionPane.WARNING_MESSAGE); 
     if (response != JOptionPane.YES_OPTION) return; 
    } 

    for (File f : selectedFiles) { 
     Files.delete(f.toPath()); 
    } 

Есть ли подобное решение выше для JavaFX с помощью FileChooser или я использую showOpenDialog (null) с setTitle ("Удалить файл с пиксельным изображением")?

ответ

0

Приведенный выше код был очень полезным и лучше всего работает с другим предложением проверки null и добавление бросает IOException методу deleteFile().

1

Вы можете легко выполнить эту задачу с помощью JavaFX, как показано ниже:

@FXML 
private void onDeleteAction(ActionEvent event) { 
    FileChooser fileChooser = new FileChooser(); 
    fileChooser.setTitle("Your_title_here"); 
    List<File> selectedFiles = fileChooser.showOpenMultipleDialog(null); 

    if (selectedFiles != null) { 
     Alert alert = new Alert(Alert.AlertType.CONFIRMATION); 
     alert.setTitle("Confirmation Dialog"); 
     alert.setHeaderText("Warning !"); 
     alert.setContentText("Are you sure you want to delete these files ?"); 

     Optional<ButtonType> result = alert.showAndWait(); 
     if (result.get() == ButtonType.OK) { 
      for (File selectedFile : selectedFiles) { 
       selectedFile.delete(); 
      } 

     } 
    } else { 
     System.out.println("Error Selection"); 
    } 
} 
+0

Выглядит неплохо, однако печать '' Выбор ошибки '', если 'fileChooser.showOpenMultipleDialog (null);' возвращает 'null' - это не очень хорошая идея. Возвращается «null», если диалог отменен. Поскольку отмена диалога является опцией для пользователя, а не неожиданным поведением, его, безусловно, не следует обрабатывать, печатая сообщение об ошибке где-то. – fabian