2012-04-07 15 views
7

dizinleri SADECE dizinleri göstermek için başarısız görüntüler (peşin Teşekkür! Altta daha fazla bilgi. Örnek kod gerekiyorsa lütfen bize bildirin.) Ben çalışıyorumJava JFileChooser Filtresi ile sözde sadece

Sorun çözmek:

kabul (Dosya dosyası) bu olan bir javax.swing.filechooser.FileFilter nesnenin kullanımı yoluyla, sadece dizinleri (ve dosyaları) görüntülemek için bu JFileChooser nesnesini almaya çalışıyorum geçersiz yöntem: return file.isDirectory();. Ancak, en azından Mac'imde, dosyaların dizinlerle birlikte görüntülenmesini engellemez (dosyaların setFileSelectionMode() yöntemini kullanmadan seçilmesini engeller).

Soru

mıyım şey eksik? Değilse, daha önce hiç böyle biriyle karşılaştı mı?

My anlayış/varsayımlar: Eğer JFileChooser en setFileFilter() yöntem haline bir javax.swing.filechooser.FileFilter nesnesinde geçerken

  1. sihirli gerçekleşmesi gerekir.
  2. onun setSelectionMode(JFileChooser.DIRECTORIES_ONLY);

Kod

import java.io.File; import javax.swing.filechooser.FileFilter; // inside a method that's adding this to a JPanel _fileChooser = new JFileChooser("."); _fileChooser.setControlButtonsAreShown(false); _fileChooser.setFileFilter(new FolderFilter()); // _fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); _panelMidLeft.add(_fileChooser); // an inner class, defined somewhere else in the class private class FolderFilter extends javax.swing.filechooser.FileFilter { @Override public boolean accept(File file) { return file.isDirectory(); } @Override public String getDescription() { return "We only take directories"; } } 

Teşekkür

kullanarak gibi davrandığı) (setFileFilter ile benim JFileChooser gibi görünüyor!

Alex

+0

(ortak [Java adlandırma kurallarını] öğrenebilirsiniz http://java.sun.com/ sınıflar, metotlar ve özellik isimleri için dokümanlar/kitaplar/jls/second_edition/html/names.doc.html # 73307) (özellikle isimler için kullanılan durum) ve tutarlı bir şekilde kullanın. –

+0

Öneriniz için teşekkürler. '_' (Benim durumumda örnek değişkenleri fiilen göstermekteydi) kullanımı dışında, şu anda web'deki dokümanları gözden geçirirken, birkaç şeyi belirtmek ister misiniz? –

cevap

15

Sizin kodunuz benim için çalışıyor. Benim SSCCE:

import java.io.File; 
import javax.swing.JFileChooser; 

public class ShowDirectoriesOnly { 
    public static void main(String[] args) { 
     JFileChooser fileChooser = new JFileChooser("."); 
     fileChooser.setControlButtonsAreShown(false); 
     fileChooser.setFileFilter(new FolderFilter()); 
     fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
     fileChooser.showOpenDialog(null); 
    } 

    private static class FolderFilter extends javax.swing.filechooser.FileFilter { 
     @Override 
     public boolean accept(File file) { 
     return file.isDirectory(); 
     } 

     @Override 
     public String getDescription() { 
     return "We only take directories"; 
     } 
    } 
} 

Hala sorun yaşıyorsanız, en iyi sorununuzu gösterir kendi SSCCE yaratmaktır.

Düzenleme o JDK1.7 ile OS X altında nasıl göründüğüne

Ekran

OS X screenshot

+2

Bu kod, tüm dosyaların grileştirildiği ve seçilemeyen, ancak SSCCE için hala görülebilir (OS X, JDK 1.7) +1'in JFileChooser olduğunu gösterir, – Robin

+0

@Robin'i test etmeyi çok kolaylaştırır: Başlar için teşekkürler. Windows 7'de, dosyaları hiç göremiyorum, sadece dizinler. Bu, L & F'ye bağlı olabilir mi diye merak ediyorum. –

+0

Teşekkürler Hovercraft Eels & Robin'den. Evet, örneğinizi kullanarak dosyalarımı macumda görebiliyorum.SSCCE örneğinde +1 ve kesinlikle bunu gelecekteki SO sorularımda yapacağım. (Burada bir resim yayınlayabileceğimi umuyordum ama sonuçta SO üzerinde yapabilmem için 10 itibari noktasına veya daha fazlasına ihtiyacım var. Oops.) –