2013-10-10 13 views
7
ile filtre dosya türleri

Bir dosya seçmek için JFileChooser kullanıyorum ve yalnızca jpg veya jpeg dosyalarını gösterecek şekilde ekranı sınırlamaya çalışıyorum. FileFilter ve ChoosableFileFilter'ı denedim ve dosya seçimini sınırlandırmıyor.JFileChooser

JFileChooser chooser = new JFileChooser(); 
FileFilter filter = new FileNameExtensionFilter("JPEG file", new String[] {"jpg", "jpeg"}); 
chooser.setFileFilter(filter); 
chooser.addChoosableFileFilter(filter); 
int returnVal = chooser.showOpenDialog(null); 
if(returnVal == JFileChooser.APPROVE_OPTION) { 
    debug.put("You chose to open this file: " + chooser.getSelectedFile().getAbsolutePath()); 
    File selectedFile = new File(chooser.getSelectedFile().getAbsolutePath()); 
... 
+2

Windows 7'de JDK7'yi kullanarak benim için iyi çalışıyor. Tüm dizinleri görüyorum. Daha sonra dosyalar uzantı tarafından filtrelenir. – camickr

+0

Benim için aynı. Mükemmel çalışıyor, JDK 7 ve W7 –

cevap

1

deneyin ve yerine fileChooser.addChoosableFileFilter(filter) ait fileChooser.setFileFilter(filter) kullanın: İşte benim kodudur.

0

bir örnek kod:

Burada iyi örnekle link!

private void btnChangeFileActionPerformed(java.awt.event.ActionEvent evt) {            
     final JFileChooser fc = new JFileChooser(); 
     fc.addChoosableFileFilter(new ArffFilter()); 
     int returnVal = fc.showOpenDialog(this); 
     ... 
} 

Sonra

class ArffFilter extends FileFilter { 

@Override 
public boolean accept(File file) { 
    if (file.isDirectory()) { 
     return true; 
    } 
    String fileName = file.getName(); 
    int i = fileName.lastIndexOf('.'); 

    if (i > 0 && i < fileName.length() - 1) { 
     if (fileName.substring(i + 1).toLowerCase().equals("arff")) { 
      return true; 
     } 
    } 

    return false; 
} 

    @Override 
    public String getDescription() { 
     return ".arff (Weka format)"; 
    } 
} 
5

bu deneyin:

JFileChooser fileChooser = new JFileChooser(); 
JileChooser.setFileFilter(new FileFilter() { 

    public String getDescription() { 
     return "JPG Images (*.jpg)"; 
    } 

    public boolean accept(File f) { 
     if (f.isDirectory()) { 
      return true; 
     } else { 
      String filename = f.getName().toLowerCase(); 
      return filename.endsWith(".jpg") || filename.endsWith(".jpeg") ; 
     } 
    } 
}); 
1

siz "herhangi bir dosya türü için bir seçenek izin veriyor," olduğu gibi "o seçimi sınırlayıcı değil" demek? Öyleyse, JFileChooser.setAcceptAllFileFilterUsed(boolean)'u deneyin.

chooser.setAcceptAllFileFilterUsed(false); 

JFileChooser documentation göre, dosya filtre listesine her dosya türlerinin dosya filtresi eklemek için değil söylemek gerekir.

İlgili konular