2012-11-29 30 views
25

我想在JavaFX FileChooser中設置文件過濾器,但我找不到一種方法來完成它。JavaFX FileChooser:如何設置文件過濾器?

我的代碼:

FileChooser fc = new FileChooser(); 
    fc.setTitle("My File Chooser"); 
    File f = fc.showOpenDialog(primaryStage); 
    System.out.println(f); 
+2

我沒有經驗,但它聽起來像它類似於此線程的代碼:https://forums.oracle.com/forums/thread.jspa?messageID=10333202 – Charlie

回答

45

你可以這樣做:

FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("TXT files (*.txt)", "*.txt"); 
chooser.getExtensionFilters().add(extFilter); 

下面是一個簡單的例子:

public class ExtensionFilterExample extends Application { 

    public static void main(String[] args) { 
     launch(args); 
    } 

    @Override 
    public void start(final Stage primaryStage) { 
     primaryStage.setTitle("Extension Filter Example"); 

     final Label fileLabel = new Label(); 

     Button btn = new Button("Open FileChooser"); 
     btn.setOnAction(new EventHandler<ActionEvent>() { 

      @Override 
      public void handle(ActionEvent event) { 
       FileChooser fileChooser = new FileChooser(); 

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

       // Show open file dialog 
       File file = fileChooser.showOpenDialog(primaryStage); 
       if (file != null) { 
        fileLabel.setText(file.getPath()); 
       } 
      } 
     }); 

     VBox vBox = new VBox(30); 
     vBox.getChildren().addAll(fileLabel, btn); 
     vBox.setAlignment(Pos.BASELINE_CENTER); 

     StackPane root = new StackPane(); 
     root.getChildren().add(vBox); 
     primaryStage.setScene(new Scene(root, 300, 250)); 
     primaryStage.show(); 
    } 
} 
+2

謝謝,它確實有效。我在文檔中看到了getExtensionFilters(),但我期待着像addExtensionFilter()或setExtensionFilters()這樣的東西。 – ceklock

+1

不客氣:) – Reimeus

+0

可以在這裏重複使用FileChooser,還是必須爲每個事件發生創建? – ed22

10

更新爲JavaFX加上多個擴展過濾器:

FileChooser fc = new FileChooser(); 

FileChooser.ExtensionFilter fileExtensions = 
    new FileChooser.ExtensionFilter(
    "Web pages", "*.tpl", "*.html", "*.htm"); 

fc.getExtensionFilters().add(fileExtensions); 
-1

這是你如何做到的。

FileChooser fc=new FileChooser(); 
FileChooser.ExtensionFilter fileExtensions =new FileChooser.ExtensionFilter("music files","*.mp3", "*.mp4"); 
fc.getExtensionFilters().add(fileExtensions); 
List<File> selectedFiles=fc.showOpenMultipleDialog(null);  
if(selectedFiles!=null){ 
    for(int i=0;i<selectedFiles.size();i++){ 
      System.out.println(selectedFiles.get(i).toString()); 
    } 
} 
+0

這是@Zon提供的答案的重複 – Darrelk

相關問題