큰 응용 프로그램의 일부로, 사용자 정의 설정을 수집하고 저장하는 설정 클래스를 작성하고 있습니다. 이 클래스는 싱글 톤이며 응용 프로그램 시작 중에 인스턴스화됩니다.JFrame이 첫 번째 인스턴스화 후에 작동하지 않습니까?
사용자 입력을 받아들이려면 두 개의 다른 GUI 프레임이 ConfigSettings.java 내에서 공용 정적 메서드 인 selectSettings()로부터 차단됩니다. 둘 다 JFrame의 서브 클래스입니다. 다음은 파일 선택 대화 상자의 인스턴스화를위한 코드입니다.
private void selectFile() {
SelectFileGUI fileSelector = new SelectFileGUI();
fileSelector.setVisible(true);
synchronized(this) {
try {
wait();
} catch(Exception e) {
e.printStackTrace();
}
}
fileSelector.dispose();
}
응용 프로그램이 처음 실행될 때 제대로 작동합니다. 그러나 나중에 사용자는 새 소스 파일 선택을 포함하여 선택한 설정을 변경할 수 있습니다. 이것은 selectSettings()를 다시 호출하여 수행됩니다.
내가 겪고있는 문제는 이러한 GUI 구성 요소를 인스턴스화하고 다시 표시하려고하면 새로운 JFrame이 표시되지만 회색 배경이 표시되고 버튼이나 다른 구성 요소가 표시되지 않는다는 것입니다. 디버깅하는 동안 SelectFileGUI의 새 인스턴스를 직접 만들지 못했습니다.
이런 종류의 동작을 일으킬 수있는 원인은 무엇입니까?
GUI 구성 요소가 정적입니까? 그렇다면 첫 번째 JFrame이 사라진 후에 사라질 수 있습니다. 글쎄, 사라진 것은 아니지만 JFrame이 없어지면 종료되었을 수 있으므로 더 이상 표시 할 수있는 상태가 아닙니다. –