티스토리 뷰

들어가며

  • JavaFX FileChooser를 사용하면서 아래 이미지처럼 특정 확장자를 가진 파일만 보여지게 하고 싶은 경우가 있습니다.
  • 이럴 때 FileChooser에 Extension Fileter를 추가하여 구현하는 방법을 알아보겠습니다.


ExtensionFilter

  • FileChooser 클래스 에서는 ExtensionFilter 인스턴스 리스트를 가지고 있고 이 인스턴스를 사용하여 필터를 설정합니다.
  • 아래 두개의 멤버변수를 가지고 있는 FileChooser의 이너 클래스
public static final class ExtensionFilter {
	//Chooser 화면에 보여질 설명 (예. "Text File(*.txt)")
        private final String description;
	//확장자 패턴 String 리스트 (예. "*.text", "LOG-*.txt")
        private final List<String> extensions;
}

예제

  • 아래 코드는 기본 전시될 Path를 받아서 Extentsion 필터를 걸어 FileChooser를 전시하고 선택결과를 리턴하는 예제입니다.
  /**
   * @param defaultPath Chooser의 기본 경로
   * @return 선택결과를 담은 Optional 객체
   */
  public static Optional<File> chooseCustomFile(String defaultPath) {
    FileChooser fileChooser = new FileChooser();
    File startDir = new File(defaultPath);

    //Extension 필터 설정
    fileChooser.getExtensionFilters().add(new ExtensionFilter("Text File(*.txt)", "*.txt"));
    fileChooser.getExtensionFilters().add(new ExtensionFilter("Config File(*.config)", "*.config"));

    //기본 경로가 없는 경우를 대비한 예외 처리
    if (!startDir.canRead()) {
      startDir = new File("c:/");
    }
    //기본 디렉터리 설정
    fileChooser.setInitialDirectory(startDir);
    //Title 설정
    fileChooser.setTitle("Choose Custom File");

    //Chooser 전시
    File result = fileChooser.showOpenDialog(null);
    return Optional.ofNullable(result);
  }

 


관련글

 

(JavaFX) Chart에 값(series)이 많을 때 UI 성능 이슈 해결 방법

들어가며 Linchart를 사용하면서 전시해야 할 값(series)의 수가 너무 많아서 UI성능이 느려지는 이슈가 발생했다. 해결 방법 Series-Reducer 사용 series-reducer는 Chart 전시 값(series)이 많을 때 series개수..

jinseongsoft.tistory.com

 

[JavaFX] 실시간 업데이트 되는 Timer(시계) 컨트롤 구현 방법

들어가며 JavaFX를 이용해 실시간으로 업데이트되는 Timer 컨트롤을 구현해보고자 합니다. 원본 소스는 아래 위치에 있습니다. rlawlstjd0077/JavaFxPlayGround Contribute to rlawlstjd0077/JavaFxPlayGround dev..

jinseongsoft.tistory.com

 

(JavaFX) JavaFX TableView 사용법 ver.2

들어가며 이전에 썼던 글인 JavaFX TableView 사용법 이 시간이 지나서 보니 조금 설명이 허접한 것 같기도 하고.. 리뉴얼이 필요할 것 같았다. [JavaFX] Table View 사용법 Table View 사용법 이번 시간에는 Ja

jinseongsoft.tistory.com

 

반응형
댓글