문제

내 앱이 Mac에서 실행될 때 jfilechooser를 사용하는 것에서 Filedialog로 전환하려고합니다. 지금까지 다음 코드가 있습니다.

    FileDialog fd = new FileDialog(this);
    fd.setDirectory(_projectsBaseDir.getPath());
    fd.setLocation(50,50);
    fd.setFile(?);
    fd.setVisible(true);
    File selectedFile = new File(fd.getFile());

질문을 위해 무엇을 넣을까요? 내 파일 선택자가 디렉토리가 파일 선택기의 입력이되도록 허용 할 수 있도록합니다 (다음과 같은 메소드는 디렉토리가 디렉토리를 수락하기 위해 제출 한 디렉토리가 원하는 올바른 종류의 디렉토리인지 확인하기 위해 이미 확인합니다).

도움이 되었습니까?

해결책

휴대용 jfilechooser 대신 FileDialog를 사용하기로 결정했다고 가정하면 생성 된 제출물이 디렉토리를위한 시스템 속성을 설정해야합니다.

문제의 속성은입니다 apple.awt.fileDialogForDirectories.

따라서 간단히 다음을 수행하십시오.

System.setProperty("apple.awt.fileDialogForDirectories", "true");
FileDialog fd = new FileDialog(this); 
fd.setDirectory(_projectsBaseDir.getPath()); 
fd.setLocation(50,50);
fd.setVisible(true); 
File selectedFile = new File(fd.getFile());
System.setProperty("apple.awt.fileDialogForDirectories", "false");

휴대용 jfiledialog를 교체하려고하기 때문에 이것이 휴대용이 아니라고 주목해야합니다. 나는 그것이 문제가되지 않는다고 생각합니다.

다른 팁

앱이 Mac에서 실행될 때 jfilechooser를 사용하는 것에서 Filedialog로 전환하려고합니다.

나는 당신이 스윙 월드에 머무르고 무거운 웨이트 세상의 AWT에서 멀리 떨어져 노력할 것을 제안합니다. Mac의 스윙 L & F와 관련된 문제를 해결하는 방법이 있습니다. 만약 그렇다면 문제가 있습니다. 보세요 이 게시물은 이전 질문에 대한 게시물입니다, 파일 선택기에서 올바른 Mac 아이콘을 얻는 방법을 보여주는 사이트에 연결됩니다.

당신의 질문에 정확하게 대답하지 않은 것에 대해 실례합니다. 다른 이유가 있다면 FileDialog, 이 게시물을 기꺼이 제거하겠습니다.

가장 인기있는 솔루션을 사용한 후 :

System.setProperty("apple.awt.fileDialogForDirectories", "true");

기본 Filedialog 구현의 버튼 (영어로만) 번역을 해결할 수 없습니다.

그래서 나는 MacOS에서 완벽하게 작동하는 해결 방법을 얻습니다.

try {
    Process process = Runtime.getRuntime().exec(new String[]{//
        "/usr/bin/osascript", //
        "-e", //
        "set selectedFolder to choose folder\n"//
        + "return POSIX path of selectedFolder"
    });
    int result = process.waitFor();
    if (result == 0) {
        String selectedFolder = new BufferedReader(new InputStreamReader(process.getInputStream())).readLine();
        return new File(selectedFolder);
    }
} catch (Exception ex) {
}

return null;

즐기다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top