2011-03-07 158 views
3

使用JFileChooser時,有一個「詳細視圖」按鈕。 每個文件顯示5條信息。 圖標,名稱,大小,類型和「修改日期」。 什麼類控制'Type'值? 使用類'FileView',可以控制圖標和名稱。 使用類'文件',可以控制大小和「修改日期」。 類型的描述非常好,我想在其他地方使用它們,我也有一些「新」類型,我希望能夠給出「類型」描述 。JFileChooser和「詳細視圖」

回答

1
+0

NO,類 '文件查看' 方法不改變 「類型」 列'JFileChooser'中的值。 – Joe 2011-03-07 15:25:57

+0

+1,@Joe,如果你重寫該方法,那麼我相信你可以返回你想要的任何「描述」。但是我會覆蓋JFileChooser上的方法,而不是FileView。 – camickr 2011-03-07 15:57:41

+0

號我試過了,'JFileChooser''Type'列完全沒有受到FileView的類型描述方法的影響。 – Joe 2011-03-07 16:02:08

0
import javax.swing.*; 
import javax.swing.filechooser.*; 
import java.io.*; 


public class A { 
public static void main(String[] args) { 
    File f = new File("f.jpg"); 
    JFileChooser j = new JFileChooser(); 
    System.out.println(j.getTypeDescription(f)); 
} 
} 

輸出是我的系統上:

F:> javac的A.java

F:> Java中的

IrfanView的JPG文件

這是因爲我在我的系統上安裝了IrfanView; JFileChooser/FileView >> getTypeDescription()查詢系統(在我的情況下爲Windows)獲取此信息。爲了「添加自己的描述」,你可以(比如說camickr)覆蓋getTypeDescription(),或者你可以將它添加到你的系統中(在Windows註冊表中的HKEY_CLASSES_ROOT下)。

+0

是的,你是對的。問題是,在你的例子中「f.jpg」是一個真正的文件。 「類型」名稱的計算形式多於文件擴展名。例如,如果您只是創建了一個名稱,如「Bubba.jpg」,則類型描述將爲「Generic Type」。我希望看到什麼課程實際計算出「類型」值。 JFileChooser沒有「setTypeDescription方法,並且在FileView中設置類型不會改變或修改JFileChooser類型列中的類型描述 – Joe 2011-03-07 17:09:20

+0

不,它不會查看文件;我可以創建0字節文件(例如使用記事本),命名爲「f.jpg」,運行我的程序,它會顯示「IrfanView JPG文件」。正如我所說,它根據擴展名(例如「jpg」)在註冊表(HKEY_CLASSES_ROOT)中查找此信息。 – 2011-03-07 17:26:21

+0

只做了一個快速測試,覆蓋了JFileChooser類的getTypeDescrition方法,並不會在「Details View」中更改「Type」列中顯示的Type信息。 – Joe 2011-03-07 17:33:56

0

我認爲你必須做的重寫Java中的類型信息是用你自己的FileSystemView的子類實例化JFileChooser。

  • 子類的FileSystemView到MyFileSystemView

  • 覆蓋getSystemTypeDescription(文件F)

  • 在overrride爲任何你想要的和返回值返回默認值的特殊文件類型回報

    從使用超級呼叫,否則

  • 實例化您的FileChoosers與以下原型之一,將您的自定義MyFileSystemView作爲第二個argum耳鼻喉科

的JFileChooser(文件currentDirectory所,的FileSystemView FSV)

的JFileChooser(字符串currentDirectoryPath,的FileSystemView FSV)

+0

謝謝。由此,我能夠解決這個問題。在getSystemTypeDescription上調用super是不行的。但是創建一個空的JFileChooser併爲getTypeDescription返回它的值解決了這個問題。 – Joe 2011-03-08 20:29:33