2012-07-05 3 views
2

DIRECTORIES_ONLY 모드로 설정된 jfilechooser가 있습니다. 현재 jfilechooser가 directory_only 모드에서 폴더를 선택하는 것이 마음에 들지 않는 경우 폴더 이름에 전체 절대 경로가 표시됩니다. 파일의 경우와 같이 폴더 이름 만 표시하도록이 동작을 무시할 수있는 방법이 있습니까?jfilechooser DIRECTORIES_ONLY 모드에서 폴더 이름의 전체 경로를 숨기는 방법

내 JFileChooser를이 폴더를 선택하면 또는 에 내용을 저장하기 위해 생성하는 것입니다 폴더의 이름을 지정 하기위한 것입니다, 저도 같은 문제를 가지고 해당 폴더

답변

2

나는 자바로 코딩하지 않고 kawa (jvm scheme)로 코딩 할 수 있으므로 가능한 한 자바와 같은 솔루션 만 제공 할 수있다.

는 기본적으로 나는 프로퍼티 변경 SELECTED_FILE_CHANGED_PROPERTY을 듣고 다음 을하고 JFileChooser로의 일부입니다 FileChooserUI으로 수동으로 파일 이름 표시를 설정하는 내 JFileChooser를 재정의 PropertyChange 방법에 PropertyChangeListener를 추가했다.

이 모든 것은 미학을위한 것이며, 선택한 폴더는 어쨌든 변경되지 않습니다. 파일 이름 표시가 전체 경로가 아니라 단지 방금 선택한 폴더의 이름 일 것입니다.

테스트하지 않고 자바 코드를 작성하려는 시도입니다. 나는 시간이 더있을 때 이것을 다시 시험 할 것이다.

JFileChooser folder_chooser = new JFileChooser(); 

folder_chooser.setFileSelectionMode (JFileChooser.DIRECTORIES_ONLY); 

PropertyChangeListener folder_name_changer = new PropertyChangeListener() { 
    public void propertyChange(PropertyChangeEvent e) { 
     String property_name = e.getPropertyName(); 
     JFileChooser chooser = e.getSource(); 
     if (property_name.equals(JFileChooserSELECTED_FILE_CHANGED_PROPERTY) { 
      File selected_file = chooser.getSelectedFile(); 
      FileChooserUI chooser_ui = chooser.getUI(); 

      // BasicFileChooserUI is the subclass that implements a setFileName method 
      if (selected_file != null && (chooser_ui instanceof BasicFileChooserUI)) { 
       chooser_ui.setFileName(selected_file.getFileName()); 
      } 
     } 
    } 
}; 

folder_chooser.addPropertyChangeListener(folder_name_changer); 
2

을 덮어 씁니다. 나는 DIRECTORIES_ONLY에 모드를 설정에 대한 비트를 제거하고 오직 디렉토리 찾아보기에 표시 할 수 있도록하는 대신 파일 필터를 사용 :

chooser.setFileFilter(new FileFilter() { 
    def accept(f: File) = f.isDirectory 
}) 

이 (죄송합니다, 즉 스칼라하지만 충분히 명확해야한다).

두 번째 유스 케이스에서는 사용자가 덮어 쓸 디렉토리를 선택할 수있게하려는 경우에 특히 적합하지는 않습니다.

+0

미안하지만이 문제가 해결되지 않아서 아래 해결책을 찾았습니다. 문제는 폴더를 선택하고 저장을 누르면 프로그램이 폴더를 덮어 쓰거나 내보낼 대상으로 선택하기를 원합니다. 폴더를 열지 않습니다. –

관련 문제