2012-11-29 40 views
25

Tôi muốn đặt bộ lọc tệp trong Trình chỉnh sửa tệp JavaFX nhưng tôi không thể tìm thấy cách để thực hiện.Trình chỉnh sửa tệp JavaFX: cách đặt bộ lọc tệp?

Mã của tôi:

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

Tôi không có kinh nghiệm, nhưng có vẻ như nó tương tự như mã trong luồng này: https://forums.oracle.com/forums/thread.jspa?messageID=10333202 – Charlie

Trả lời

45

Bạn có thể làm:

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

Dưới đây là một ví dụ đơn giản:

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

Cảm ơn, nó thực sự hoạt động . Tôi thấy getExtensionFilters() trong tài liệu, nhưng tôi đã mong đợi một cái gì đó như addExtensionFilter() hoặc setExtensionFilters(). – ceklock

+1

Bạn được chào đón :) – Reimeus

+0

FileChooser có thể được sử dụng lại ở đây hay không nó phải được tạo cho mỗi sự kiện xảy ra? – ed22

10

Cập nhật cho JavaFX cộng nhiều phần mở rộng lọc:

FileChooser fc = new FileChooser(); 

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

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

Đây là cách bạn có thể thực hiện.

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

Đây là bản sao của câu trả lời được cung cấp bởi @Zon – Darrelk

Các vấn đề liên quan