2012-02-08 55 views
1

我在開放模式下使用'JFileChooser'。我需要顯示沒有擴展名的'文件名'字段。 怎麼樣? 我知道FileView。它刪除文件系統中的文件擴展名,但它留下的領域「文件名」選擇文件擴展 explanation我需要在JFileChooser(打開模式)下顯示沒有擴展名的文件名。怎麼樣?

這是我的文件查看代碼:

public class JQSFileView extends FileView{ 
@Override 
    public String getName(File file){ 
     return FilenameUtils.removeExtension(file.getName()); 
    } 
} 

我用這個:

 fc.addPropertyChangeListener(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY, new PropertyChangeListener() 
    { 
     public void propertyChange(PropertyChangeEvent evt) 
     { 

      File selectedFile = fc.getSelectedFile(); 
      String path = selectedFile.getPath(); 
      path=FilenameUtils.removeExtension(path); 
      fc.setSelectedFile(new File(path)); 

     } 
    }); 

但JFileChooser返回不正確的文件名,並且當我選擇某個文件時光標始終跳轉到上方

+0

請問您可以添加代碼嗎? – 2012-02-08 08:25:46

+0

爲了儘快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2012-02-08 08:51:36

+0

@AlexK這不是該問題的重複。這個問題可以使用'FileView'來解決,而這個OP說他們已經在使用它,並且指的是選擇器中的一個不同的字段。 – 2012-02-08 08:55:12

回答

2

底層reas on的原因是ui不使用視圖的名稱作爲名稱字段中的文本。這可能或可能是一個好主意,不知道。如果你真的想要,你可以手動,無論是在JFileChooser的子類,或者在一個PropertyChangeListener,這裏是一個覆蓋:

fc = new JFileChooser() { 

     @Override 
     public void setSelectedFile(File file) { 
      super.setSelectedFile(file); 
      ((BasicFileChooserUI) getUI()).setFileName(getName(file)); 
     } 

    }; 
    fc.setFileView(new MyView()); 

編輯

outch ......沒想到這麼ui的很多錯誤行爲:-(問題是所有的動作都是基於textField的內容重新創建一個文件對象(而不是使用選擇器的selectedFile屬性)現在如果該字符串的擴展名爲trimmed,那麼文件沒有找到,唯一的出路是替換可能不起作用的動作......

總之,這個答案是無用的,對不起。

+0

謝謝,你很幫我 – 2012-02-08 12:36:21

+0

這很有趣,但現在文件只能通過雙擊打開。如果我選擇文件,然後點擊「打開」按鈕,它不起作用。現在我不知道它有多正確 – 2012-02-13 16:06:51

相關問題