2010-06-17 2 views
3

사용자가 폴더를 선택해야하는 Java 스윙에서 문제가 발생하므로 아래 코드를 사용하고 있습니다.JFileChooser가 OS X (폴더 전용 모드)에서 잘못된 경로를 반환합니다.

JFileChooser fc = new JFileChooser(); 
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 

if(fc.showDialog(singleton, SELECT) == JFileChooser.APPROVE_OPTION) { 
    File folder = fc.getSelectedFile(); 
    String path = folder.getPath() + File.separatorChar + MYAPPFOLDER; 
} 

이제 사용자가 를 선택한 폴더 폴더로

  1. 이동을 선택하고 폴더에 폴더를
  2. 이동을 선택한 폴더로 이동, 클릭 수 2 가지 방법이 있습니다:

두 가지 방법이 내가 일을 할 경우 내가

를 얻을 창문에 있지만, OS X에서 잘 작동

나는이 작업을 수행하는 경우 :이 두번째 경우를 방지하려면 어떻게해야 path = Users/<username>/Desktop/Desktop/MYAPPFOLDER

를?

미리 감사드립니다.

답변

6

문제는 showDialog가 이것이로드 또는 저장 작업인지 여부를 알 수 없으므로 새 파일/폴더 이름을 입력 할 텍스트 상자를 제공합니다.이 옵션은 '데스크톱'을 클릭 할 때 '데스크톱'으로 설정됩니다. 폴더에 들어가서 (더블 클릭의 첫 번째 클릭과 같이) 사용자가 SELECT를 누르면 대화 상자는 해당 이름의 새 폴더를 만들고 경로에 반환한다고 가정합니다.

한 가지 해결 방법은 showOpenDialog 호출을 대신 사용하고 선택기의 제목을 수동으로 변경하고 단추를 SELECT로 승인하는 것입니다. 이렇게하면 사용자는 새로운 디렉토리 텍스트 상자를 보지 못합니다.

코드는 다음과 같을 것이다 : 나는 원래이 찬성 투표하지 않을했다

JFileChooser fc = new JFileChooser(); 
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 

fc.setDialogTitle("Select a folder"); 
fc.setApproveButtonText(SELECT); 
if(fc.showOpenDialog(singleton) == JFileChooser.APPROVE_OPTION) { 
    File folder = fc.getSelectedFile(); 
    String path = folder.getPath() + File.separatorChar + "MYAPPFOLDER"; 
} 
+1

, 나는 버튼 텍스트 기본값 JFileChooser.CUSTOM_DIALOG''로 대화 유형을 승인 사용자 설정의 Javadoc에서 본 (기본값은 열린 대화 상자입니다). – Powerlord

관련 문제