2014-11-21 4 views
0

창에서 버튼을 사용하여 JFileChooser를 연 다음 File Chooser가 열리고 원래 창이 닫힙니다. 나는 사용자가 File Chooser 이후를 사용할 때 그 창 전체를 열어두기를 원한다.Java Swing : JFileChooser를 닫은 후에 부모 창을 열어 두는 방법

내 코드 :

// Code from the class that makes the original window that has the launch button 
FilePicker filePicker = new FilePicker(); 
public void actionPerformed(ActionEvent e) { 
      txtImportLog.append("\nUser selecting file"); 
      if (filePicker.canPick()) { 
      filePicker.init(); 
      filePicker.getImportFile(); 
      } else { 
       txtImportLog.append("\nCan't pick more files."); 
      } 
     } 
    }); 

// Code from the class that creates a FilePicker 
//(yes, I know the getImportFile() and init() methods are setup badly, its just for 
// testing right now 
// Initialize - only should be called once 
public void init() { 
    filePicker = new JFileChooser(); 
    interval1 = 0; 
    interval2 = 0; 
    testFile = new File(""); // for testing. clearly. 
} 

// Get a file to import 
public static File getImportFile() { 
    filePicker.setFileSelectionMode(JFileChooser.FILES_ONLY); 
    filePicker.showOpenDialog(filePicker); 
    return filePicker.getSelectedFile(); 

} 
+4

문제를 설명하는 [실행 가능한 예제] (https://stackoverflow.com/help/mcve)를 제공하십시오. 이렇게하면 혼란이 줄어들고 더 나은 응답을 얻을 수 있습니다. – MadProgrammer

답변

0

아차, 나는 단순히 (Eclipse 플러그인 WindowBuilder에 의해 자동 생성) 부모 윈도우가 포커스를 잃었을 때,이 응용 프로그램을 종료 할 찾았다 해당 코드를했다. 파일 선택기의 부모가 주 창이었습니다. 따라서 사용자가 "파일 선택기 열기"버튼을 클릭하면 메인 윈도우의 포커스가 사라져 애플리케이션을 닫을 수 있습니다.

+1

어딘가에 코드를 두지 마세요? – luckydonald

0

setDefaultCloseOperation을 참조하십시오. http://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html

사용자가이 프레임에서 "닫기"를 시작할 때 기본적으로 발생할 작업을 설정합니다. 다음 중 하나를 지정해야합니다. DO_NOTHING_ON_CLOSE (WindowConstants에 정의 됨) : 아무 것도하지 않습니다. 프로그램이 등록 된 WindowListener 객체의 windowClosing 메서드에서 작업을 처리하도록합니다. HIDE_ON_CLOSE (WindowConstants에 정의) : 등록 된 WindowListener 객체를 호출 한 후 프레임을 자동으로 숨 깁니다. DISPOSE_ON_CLOSE (WindowConstants에 정의) : 등록 된 WindowListener 객체를 호출 한 후 프레임을 자동으로 숨기고 처리합니다. EXIT_ON_CLOSE (JFrame에서 정의 됨) : 시스템 종료 메소드를 사용하여 응용 프로그램을 종료하십시오. 이 기능은 응용 프로그램에서만 사용하십시오. 값은 기본적으로 HIDE_ON_CLOSE로 설정됩니다. 이 속성의 값을 변경하면 속성 이름이 "defaultCloseOperation"인 속성 변경 이벤트가 시작됩니다.

관련 문제