2011-08-26 8 views
17

Bir arabirim oluşturdum ve kullanıcının bir dosyayı açmasına izin veren bir işlev eklemek istiyorum. AWT kullanıyorum. FileDialog'u nasıl kullanacağımı anlamıyorum. Bana bunu açıklayan bir örnek veya iyi bir bağlantı verebilir misiniz?FileDialog nasıl kullanılır?

+1

Ayrıca bakınız [ 'FileDialogTest'] (http://stackoverflow.com/questions/2914627/file-explorer-using-java-how-to-go-about-it/2914733#2914733). – trashgod

cevap

3

Çeşitli farklı görevler için nasıl kullanılacağını gösteren birkaç kod örneği var. here.

Bu, geri adım atıp, işin en iyi görevi olup olmadığını kontrol etmek isteyebilirsiniz dedi. Swing/swt gibi bir şey üzerinde kullanmak için geçerli sebepler vardır, ancak sadece Swing'e başlıyorsanız, IMO daha iyi bir seçim olacaktır (daha fazla bileşen, daha fazla öğretici ve daha geniş çaplı talep edilen bir kütüphanedir. . bugünlerde)

+1

Bu bağlantıya yol açan kod örneklerinin her üçü de aynıdır ... (sadece, benzer görünüyorlarsa, çıldırmıyorsanız ...) – ArtOfWarfare

26

tam bir kod örneği, dosya filtreleme:

FileDialog fd = new FileDialog(yourJFrame, "Choose a file", FileDialog.LOAD); 
fd.setDirectory("C:\\"); 
fd.setFile("*.xml"); 
fd.setVisible(true); 
String filename = fd.getFile(); 
if (filename == null) 
    System.out.println("You cancelled the choice"); 
else 
    System.out.println("You chose " + filename); 
+1

bu, bir 'JFileChooser'den çok daha hızlı bir şekilde yardımcı oldu utanç, istisnaları iyi idare etmiyor, bu 'null' bitiyor beni yukarı. – iKlsR

7

@TheBronx tarafından cevap eklemek için - benim için, fd.setFile("*.txt"); OS X'te çalışmıyor Bu çalışır:

Ya da fantezi bir Java 8 olarak lambda:
fd.setFilenameFilter(new FilenameFilter() { 
    @Override 
    public boolean accept(File dir, String name) { 
     return name.endsWith(".txt"); 
    } 
}); 
fd.setFilenameFilter((dir, name) -> name.endsWith(".txt")); 
+1

Bir Ubuntu'da da çalışmıyor. Bu onu düzeltir. –

+1

Harika bir çözüm, ancak Windows üzerinde çalışmayacak. https://docs.oracle.com/javase/7/docs/api/java/awt/FileDialog.html#setFilenameFilter%28java.io.FilenameFilter%29 –

+1

@KenoClayton True. Çapraz platform çözümünün hem 'setFile' hem de setFilenameFilter 'işlevini kullanacağını düşünüyorum. –