Java Filedialog를 OS X의 필더 타입으로 수락하는 방법은 무엇입니까?
-
22-07-2019 - |
문제
내 앱이 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;
즐기다!