Java,扩展File以获取更多属性

时间:2014-05-15 09:55:50

标签: java file inheritance jlist wallpaper

我正在编写一个“简单”的Java程序,让用户可以更改桌面壁纸。 它基本上用来自用户选择目录的文件填充JList,用户双击将其中一个文件设置为壁纸。简单!

我想要更多的属性(例如boolean isFavorite)来为程序提供更多功能,但我不知道该怎么做......

我尝试制作我自己的类扩展文件的壁纸,但是当我尝试用壁纸填充我的JList时,我在文件和壁纸之间切换时遇到了各种类的投射错误。所以我最终覆盖了越来越多的File方法,直到我陷入如此深刻的神秘错误网络,我不知道如何离开。

我想到了用来自Andrew的文件来填充我的JList,他在这里的回答是这样做的:JList that contains the list of Files in a directory

我看起来像这样,

File wallFile = new File(System.getProperty("user.home"));

//Create the file array
File[] fileArray =  wallFile.listFiles(new TextFileFilter());

//Put File objects in the list
JList<File> fileList = new JList<File>(fileArray);

因为我知道我在这里没有做任何独特的事情,所以我知道应该有“认可”的方法来做到这一点,所以有人请赐教我关于从内置文件更改为自定义壁纸的最佳方法?

1 个答案:

答案 0 :(得分:1)

listFiles()方法将使用默认的File类,而不是扩展的WallPaper类。因此,如果您尝试将其中一个对象强制转换为WallPaper,则会出现错误。相反,这样做:

String [] nameArray = wallFile.list(new TextFileFilter());
File [] fileArray = new File [nameArray.length];
for (int i=0;i<nameArray.length;i++)
   fileArray[i] = new WallPaper(new File(wallFile, nameArray[i]).getAbsolutePath());//provided you have a WallPaper constructor that accepts an absolute path