2014-05-15 2 views
0

저는 사용자가 데스크탑 배경 화면을 변경할 수있게 해주는 "간단한"Java 프로그램을 작성하고 있습니다. 기본적으로 사용자의 디렉토리에서 JList를 파일로 채우고 사용자가 두 번 클릭하여 파일 중 하나를 배경 무늬로 설정합니다. 단순한!Java, 파일을 확장하여 더 많은 속성보기

내가 프로그램을 더 많은 기능을 제공하기 위해 (예를 들어 부울 isFavorite,)하지만 좀 더 속성을하고 싶습니다,하지만 난이 작업을 수행하는 방법을 잘 모르겠어요 ...

나는 내 자신의 클래스 배경 화면을 만드는 시도 확장 된 파일,하지만 내 JList 대신 배경 화면 파일 및 배경 화면간에 전환 할 때 모든 종류의 클래스 캐스팅 오류가 채우기 위해 채 웁니다. 그래서 필자는 File 메서드를 점점 더 많이 오버라이드하는 결과를 낳았습니다.

여기 그의 대답에 그렇게 앤드류의 파일로 내 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

listFiles() 메서드는 확장 된 WallPaper 클래스가 아닌 기본 File 클래스를 사용합니다. 따라서 이러한 객체 중 하나를 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 
+0

내 바탕 화면 클래스의 생성자는 String 인수 (String filePath)를 취한 다음 "super (filePath);"를 호출합니다. 나는 super()를 통해 File-constructor를 호출해야하는지, 아니면 내 자신을 만들어야하는지 잘 모르겠다 ... 나는 아직도 이러한 객체 지향 프로그래밍 설계에 익숙하지 않다. – Dunderklumpen

+0

@Dunderklumpen 당신이 묘사하는 것은 괜찮은 소리입니다. super (filePath) 비트를 유지하십시오. – schmop

+0

좋아, 내가 조금 변경해야했다 "File [] fileArray" "[배경] fileArray"변경하고 바탕 화면에 여러 장소에 파일을 변경해야하지만 지금은 잘 작동하고있는 것처럼 보인다 "isFavorite "를 사용할 수 있습니다. 빠르고 쉬운 답변에 큰 감사드립니다! – Dunderklumpen