2013-09-02 32 views
12
private void openMenuActionPerformed(java.awt.event.ActionEvent evt) { 

    DBmanager db = new DBmanager(); 
    if (!db.getCurrentUser().equals("Admin")) { 
     JOptionPane.showMessageDialog(this, "You are Not Allowed to Run Applications"); 
     JFileChooser fileChooser = new JFileChooser(); 
     fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); 
     fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("PDF Documents", "pdf")); 
     fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("MS Office Documents", "docx", "xlsx", "pptx")); 
     fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("Images", "jpg", "png", "gif", "bmp")); 
     fileChooser.setAcceptAllFileFilterUsed(false); 
     int returnVal = fileChooser.showOpenDialog(this); 

     if (returnVal == JFileChooser.APPROVE_OPTION) { 
      File file = fileChooser.getSelectedFile(); 

      if (Desktop.isDesktopSupported()) { 
       try { 
        Desktop.getDesktop().open(file); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    } else if (db.getCurrentUser().equals("Admin")) { 
     JFileChooser fileChooser = new JFileChooser(); 
     fileChooser.setAcceptAllFileFilterUsed(true); 
     int returnVal = fileChooser.showOpenDialog(this); 
     if (returnVal == JFileChooser.APPROVE_OPTION) { 
      File file = fileChooser.getSelectedFile(); 
      if (Desktop.isDesktopSupported()) { 
       try { 
        Desktop.getDesktop().open(file); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    }// TODO add your handling code here: 
} 

Xin chào .... Tôi đang cố lọc các tệp trong bộ lọc tệp bằng cách đặt fileChooser.setAcceptAllFileFilterUsed(false);. Tùy chọn "tất cả các tệp" biến mất khỏi FileChooser nhưng tất cả các tệp vẫn hiển thị trừ khi bạn chọn tùy chọn từ tài liệu PDF, ms Office hoặc images.I chỉ muốn có 3 bộ lọc tùy chỉnh của tôi khi mở trình chọn tệp.Cách hạn chế trình chọn tệp trong java đối với các tệp cụ thể

+1

Sử dụng 'setFileFilter (FileFilter lọc) 'để thiết lập một bộ lọc mặc định khi nó tải. – BlackBox

+0

Bạn đã trải qua [hướng dẫn chọn tệp] (http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html) chưa? Nó giải thích việc sử dụng bộ lọc tệp cũng như 'FileView' .. BTW - Để được trợ giúp tốt hơn sớm hơn, hãy đăng một [SSCCE] (http://sscce.org/). –

+0

Cảm ơn ..... thêm bộ lọc mặc định đã làm việc fileChooser.setFileFilter (FileNameExtensionFilter mới ("Tài liệu PDF", "pdf")); – julihx

Trả lời

12

Ví dụ, nếu bạn muốn lọc JFileChooser của bạn để Nghiêm hiển thị phổ biến nhất được tìm thấy tập tin hình ảnh, bạn sẽ sử dụng một cái gì đó như này:

FileNameExtensionFilter filter = new FileNameExtensionFilter("Image Files", "jpg", "png", "gif", "jpeg"); 
JFileChooser fileChooser = new JFileChooser(); 
fileChooser.setFileFilter(filter); 

Đối số đầu tiên là mô tả (được hiển thị khi lựa chọn ở dưới) và đối số thứ hai là phần mở rộng tệp không chính thức.

1

Bạn có thể sử dụng FileNameExtensionFilter để thêm tiện ích mở rộng được phép vào hộp thoại FileChooser của mình. Dưới đây là một ví dụ:

JFileChooser chooser = new JFileChooser(); 
FileNameExtensionFilter filter = new FileNameExtensionFilter(
    "JPG & GIF Images", "jpg", "gif"); 
chooser.setFileFilter(filter); 

Mọi chi tiết, vui lòng tham khảo Javadocs: FileNameExtensionFilter

0

Trong trường hợp của tôi, tôi đã phải đặt

setFileFilter(   
    new FileNameExtensionFilter("Default file filter", ...) 
); 

sau khi tất cả các cuộc gọi khác với phương pháp

addChoosableFileFilter(...); 

để làm setAcceptAllFileFilterUsed (false) hoạt động.

0

này hoạt động tốt trong java8.1

JFileChooser dbfilechooser = new JFileChooser(); 
       FileNameExtensionFilter filter1 = 
         new FileNameExtensionFilter("xls","xls"); 
       FileNameExtensionFilter filter2 = 
         new FileNameExtensionFilter("xlsx", "xlsx"); 
       FileNameExtensionFilter filter3 = 
         new FileNameExtensionFilter("csv", "csv"); 

       dbfilechooser.addChoosableFileFilter(filter1); 
       dbfilechooser.addChoosableFileFilter(filter2); 
       dbfilechooser.addChoosableFileFilter(filter3); 
Các vấn đề liên quan