2009-08-07 6 views
1

FileDialog 파일 선택기를 사용하려고합니다. Java 응용 프로그램에 원시 Apple 파일 선택기가 필요하기 때문에 (이모티콘의 부족함은 싫지만 내가 필요한 것). 내 파일 선택기를 사용하여 사용자가 .ws로 끝나는 파일을 선택할 수 있도록하려고합니다. 다음은 내가 시도한 것입니다.FileDialog를 사용하여 특정 확장명의 파일 선택

  FileDialog fd = new   

      FileDialog(_sharedInstance,rsc.str("480"),FileDialog.LOAD); 
      // fd.setFile("*.ws"); 
      class WSFilter implements FilenameFilter { 
       public boolean accept(File dir, String name) { 
        return (name.endsWith(".ws")); 
       } 
      }; 
      FilenameFilter wsFilter = new WSFilter(); 

      fd.setFilenameFilter(wsFilter); 
      fd.setDirectory(_projectsBaseDir.getPath()); 
      fd.setLocation(50,50); 

      // fd.setFile("*"); 
      fd.setVisible(true); 

어떤 이유에서든 내 파일 선택 도구로는 파일을 선택할 수 없습니다. 어떤 아이디어?

답변

3

대답했다 나는이 호출이 필요합니다 System.setProperty를 ("apple.awt.fileDialogForDirectories를", "거짓") ;

+0

연결할 수있는 관련 문서가 있습니까? –

+0

아닙니다. 다음 스레드에서 누군가가 FileDialog가 diectories를 받아들이도록 허용하기 위해 전역 속성을 설정해야하는 방법을 설명했습니다. 나는 그것을 다시 잊어 버렸습니다. 이것은 사람들이 FileDialog를 사용하지 말라고 말하는 많은 이유 중 하나입니다. http://stackoverflow.com/questions/1224714/how-can-i-make-a-java-filedialog-accept-directories-as-its-filetype-in-os-x – Mike2012

1

왜 JFileChooser를 사용하지 않습니까?

JFileChooser fileChooser = new JFileChooser(new File(filename)); 
fileChooser.addChoosableFileFilter(new MyFilter()); 

class MyFilter extends javax.swing.filechooser.FileFilter { 
    public boolean accept(File file) { 
     String filename = file.getName(); 
     return filename.endsWith(".java"); 
    } 
    public String getDescription() { 
     return "*.java"; 
    } 
} 
+0

Mac 기본 파일 선택기를 사용해야하고 JFileChooser가이를 허용하지 않기 때문에. – Mike2012

1

이전에 질문하지 않았습니까?

어쨌든 L & F를 변경하고 JFileChooser를 계속 사용해 볼 수 있습니다.

나는이 일이 좋은 들었어요 :

Quaqua Look and Feel

alt text

+0

우리는 현재 quaqua를 사용하고 있지만 많은 Mac 사용자는 Mac GUI의 적절한 해석이 아니라고 생각하여 기본 파일 선택기를 사용하도록 파일 선택기를 구현해야합니다. – Mike2012

+0

mmhh 내가 얼마나 관련이 있는지에 따라, 당신은 자신의 하위 클래스를 구현하고 누락 된 부분을 추가 할 수 있습니다. (상당히 어려울 것이라고 생각합니다) 또는 호출 될 때 파일 경로를 반환하는 작은 네이티브 응용 프로그램을 만들 수 있습니다. 너무 어렵지 않아야합니다 (Objective-C : P를 알고있을 때) T – OscarRyz