2015-11-17 2 views
0

J'ai une application JavaFX utilisant JRE1.8.0 u40. J'ai converti mon Swing JFileChooser Ouvrez et enregistrez dans la boîte de dialogue de style Windows7 plus récente de JavaFX FileChooser Open and Save. Mais je ne l'ai pas trouvé une méthode équivalente JavaFX FileChooser pour remplacer la méthode JFileChooser j'utilise pour la suppression d'un fichier (s) comme indiqué ci-dessous:Supprimer un (des) fichier (s) via 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()); 
    } 

Y at-il une solution similaire à celle ci-dessus pour JavaFX en utilisant FileChooser ou puis-je utiliser le showOpenDialog (null) avec setTitle ("Delete Pixel Art File")?

Répondre

0

Le code ci-dessus a été très utile et fonctionne mieux avec l'autre suggestion de la vérification des null et en ajoutant throws IOException la méthode deleteFile().

1

Vous pouvez facilement effectuer cette tâche en utilisant JavaFX comme ci-dessous:

@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

Cela semble bien, mais l'impression '" Error Selection "' si 'fileChooser.showOpenMultipleDialog (null);' renvoie 'null' n'est pas une bonne idée. 'null' est renvoyé, si la boîte de dialogue est annulée. Puisque l'annulation de la boîte de dialogue est une option pour l'utilisateur et non un comportement inattendu, elle ne devrait définitivement pas être traitée en imprimant un message d'erreur quelque part. – fabian