2008-12-10 4 views

cevap

88

Seni doğru anlıyorsam, setSelectedFile yöntemini kullanmanız gerekir.

JFileChooser jFileChooser = new JFileChooser(); 
jFileChooser.setSelectedFile(new File("fileToSave.txt")); 
jFileChooser.showSaveDialog(parent); 

Dosya mevcut değil.

DÜZENLEME: Bir Dosyayı mutlak bir yolla iletirseniz, JFileChooser bu dizinde (varsa) kendini konumlandırmayı deneyecektir. Bu işe yaramazsa

1

, burada bir geçici çözüm:

dialog.getUI().setFileName(name) 

Ama seçim modunu FILES_ONLY veya FILES_AND_DIRECTORIES olup olmadığını kontrol etmelidir. DIRECTORIES_ONLY ise, setSelectedFile() dosya adını soyar. Yukarıda belirtilen, bir çözüm dinamik diyoruz ihtiyacı dolayısıyla, maalesef setFilename UI arayüzü dahil değildir

try { 
     FileChooserUI fcUi = fileChooser.getUI(); 
     fcUi.setSelectedFile(defaultDir); 
     Class<? extends FileChooserUI> fcClass = fcUi.getClass(); 
     Method setFileName = fcClass.getMethod("setFileName", String.class); 
     setFileName.invoke(fcUi, defaultDir.getName()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

olduğu gibi

+0

İletişim kutusuna nasıl erişirsiniz? ShowSaveDialog() 'daki noktada oluşturulan ve gösterildikten hemen sonra, bu işlevin içinde yer alan özeldir. – Nyerguds

+0

Yöntemi kopyalarım. –

4

setSelectedFile dizinleri ile çalışmaz. Sadece Mac'te test edildi.

+0

Mac için çalışın 10.3.4/Java 1.4.2 –

-3

Harika! Java 1.6.35 ile Windows'da mükemmel çalışır. Benim durumumda sadece küçük bir değişiklik var:

FileChooserUI fcUi = jFileChooser.getUI(); 
Class<? extends FileChooserUI> fcClass = fcUi.getClass(); 
Method setFileName = fcClass.getMethod("setFileName", String.class); 
setFileName.invoke(fcUi, defaultDirectoryName); 
+0

Lütfen değişikliklerinizi ve neden bunları yaptığınızı açıklayın. – PhoneixS