Swing Programlama : JFileChooser

Bu derste Java swing arayüzlerimizden sistemimizdeki dosya sistemine erişimi sağlayan JFileChooser sınıfının detaylarını anlatmaya çalışacağım. İlk olarak en temel haliyle bir JFileChooser diyalog penceresi nasıl açılır onu görelim :

 JFileChooser jfc = new JFileChooser();
 jfc.showOpenDialog(null);

Bu kod parçacığı kullanıcının ön tanımlı dizinini gösteren bir dosya diyaloğu açar. Ön tanımlı dizininizi linux ortamında komut satırına “env” komutunu vererek ulaşabilirsiniz. Bu komutu çalıştırdığınızda karşınıza gelen listedeki HOME ortam değişkeni kullanıcının ön tanımlı dizinidir. Örnek görüntümüz şu şekilde olacaktır :

JFileChooser Öntanımlı Klasör

JFileChooser Öntanımlı Klasör


Peki biz dosya diyalogumuzu öntanımlı klasörde değil de başka klasörde açmak istersek ne yapmalıyız? Bunun için JFileChooser sınıfının parametre olarak dosya yolu yada dosya alan diğer yapılandırıcı metodunu kullanmalıyız. Örneğin ben dosya seçme diyaloğumu “/home/orhan/Downloads” klasöründe açmak istersem şu kod parçasını kullanmam gerekir :

JFileChooser jfc = new JFileChooser("/home/orhan/Downloads");
 jfc.showOpenDialog(null);

Bundan sonra ihtiyacımız olan kullanıcının hangi seçeneği seçtiğini öğrenmek. Kullanıcı herhangi bir dosyayı seçebilir veya işlemi iptal edebilir. Diyalogdan kullanıcı çıktısını şu şekilde alıyoruz :

JFileChooser jfc = new JFileChooser("/home/orhan/Downloads");
int kullaniciSecimi = jfc.showOpenDialog(null);

Kullanıcı seiçimi değişkeninin alabileceği değerler de JFileChooser sınıfında tanımlanmıştır. Bu değerler :

JFileChooser.APPROVE_OPTION    //seçim onaylandı
JFileChooser.CANCEL_OPTION       //seçim iptal edildi
JFileChooser.ERROR_OPTION        //işlem sırasında hata oluştu

Şimdi kullanıcının seçmiş olduğu dosya ismini JFileChooser sınıfından almayı öğrenelim.

if (kullaniciSecimi == JFileChooser.APPROVE_OPTION) {
    System.out.println(jfc.getSelectedFile());
}

Kullanıcı tarafından seçilen dosya referansına ulaşmak için getSelectedFile() metodunu kullanıyoruz. Eğer kullanıcıya birden fazla dosya seçme imkanı tanımak istiyorsak sırasıyla şu işlemleri yapmalıyız.

jfc.setMultiSelectionEnabled(true);
 int kullaniciSecimi = jfc.showOpenDialog(null);
 if (kullaniciSecimi == JFileChooser.APPROVE_OPTION) {
     for(File f : jfc.getSelectedFiles()) {
         System.out.println(f);
     }
}

Son olarak seçimimiza filtre eklemeyi öğrenelim. Örneğin sadec zip uzantılı dosyaların seçilebilmesini istiyorsak :

 jfc.setFileFilter(new FileFilter() {
            @Override
            public boolean accept(File f) {
                if(f.isDirectory())
                    return true;
                String fileName = f.getName();
                int nokta = fileName.lastIndexOf('.');
                String ext = "";
                if(nokta > 0)
                    ext = fileName.substring(nokta+1);
                return ext.equalsIgnoreCase("zip");
            }

            @Override
            public String getDescription() {
                return "ZIP Dosyaları";
            }
        });

Yeni bir filtre eklemek için setFileFilter metodundan faydalandık. Bu filtremizde kullanıcının klasörleri ve zip uzantılı dosyaları seçebilmesine izin verdik. Dosya uzantısını saptayabilmek için String sınıfının lastIndexOf ve substring metodlarından yararlandık.

İlgili Yazılar:

  1. Swing Programlama: JTable Temel Kullanım Bu yazımızda en basit haliyle Java UI programlamada sıkça kullandığımız...
  2. Swing Programlama: JTable Hücre Editörleri Bu yazıda kısaca JTable hücreleri için öntanımlı olan editörün dışında...
  3. Java Dersleri 18 – Network Programlama – UDP Bu makalede Java’nın network programlama kabiliyetlerinden bahsedeceğim. UDP protokolü uygulamalar...
  4. Java Dersleri 11 – XML Okuma – Yazma İşlemleri Bu dersimizde Java’nın XML işlemleri için kullanılan sınıflarının genel özelliklerini...
  5. Java Dersleri 14 – Koleksiyon API (Collection API) Kuyruklar (Queue) Koleksiyon API’sine ait diğer bir arayüz kuyruk (queue) arayüzüdür. Temel...

  1. tebrikler..

Fikrin geldiyse buraya yaz


[ Ctrl + Enter ]