2014-05-12 3 views
0

JFileChooser를 사용하여 사용자가 파일을 열 수있는 대화 상자를 엽니 다. 사용자가 실제로 파일을 선택하면 이미 현재 디렉토리를 설정 한 : 사용자가 대화 상자를 취소하더라도 그러나JFileChooser : 취소하기 전에 사용자가 탐색하는 마지막 디렉토리를 저장하십시오.

int returnVal = fc.showOpenDialog(frame); 
if (returnVal == JFileChooser.APPROVE_OPTION) { 
    File newfile = fc.getSelectedFile(); 

    //set the default directory to this file's directory 
    fc.setCurrentDirectory(newfile.getParentFile()); 
} 
else { 
    //User cancels file chooser. How to still set the current directory 
    //to the one they were last in? 
} 

을, (예를 들어, 그들은 파일을 선택하기 전에 그들이 프로그램에서 다른 무언가를 할 결정), 나는 그 디렉토리를 다시 찾는 번거 로움을 피하기 위해 그들이 있던 마지막 디렉토리를 저장하고 싶다. 이것이 가능합니까?

+0

동일한 파일 선택기 인스턴스를 사용하면 크기, 파일 필터 및 디렉토리가 항상 동일하게 유지되어야합니다. –

+0

'JFileChooser'를 확장 한 다른 클래스를 생성하고 사용자가 취소 할 때 실행되는 메소드를 재정의 할 수도 있습니다. – SomethingSomething

+0

전체에서 동일한 파일 선택기 인스턴스를 사용하고 있습니다. 사용자가 실제로 파일을 선택하면 그 다음에 대화 상자를 당겨서 올바른 디렉토리에있게됩니다. 하지만 파일 선택기가 사용자가 취소하기 전에 마지막 디렉토리를 캡처 한 경우 사용자가 대화 상자를 처음 열면 궁금합니다. – shimizu

답변

3

JFileChooser의 인스턴스가 마지막 위치를 "기억"하기 때문입니다. 대화 상자를 표시 할 때마다 새 인스턴스를 만들 수 있지만 비효율적이며 시간이 오래 걸릴 수 있습니다.

대신 "좋은"위치를 인스턴스 변수에 저장하십시오. 저장 대화 상자를 표시하기 전에 현재 디렉토리를 설정하고 마지막으로 알려진 "양호한"위치를 전달하십시오.

+0

사용자가 대화 상자를 취소하면 JFileChooser의 마지막 위치를 구체적으로 어떻게 얻을 수 있습니까? – shimizu

+0

방금했습니다. getCurrentDirectory 또는 10 개의 선택된 File의 부모 참조를 사용할 수 있습니다. – MadProgrammer

+0

아, 대화가 취소 된 경우에도 getCurrentDirectory가 마지막 위치를 알 수 없다는 것을 알지 못했습니다. 이제 작동합니다. 감사! – shimizu