JInternalFrame을 확장하는 GameUpdater라는 자바 클래스가 있습니다. 클래스를 프로그램 자체로 실행했을 때 JFrame을 확장하는 데 사용했지만 JInternalFrame으로 변경하여 더 큰 응용 프로그램의 일부가되었습니다. 이제 메뉴 버튼을 통해 액세스 할 수 있습니다.JInternalFrame이 표시되지 않습니다.
I는 다음과 같이 메뉴 버튼이 누르면 함수가 호출되고 : 주기적 표시 할 JInternalFrame의 콘텐츠 업데이트되도록
private void update(){
GameUpdater gu = new GameUpdater();
desktop.add(gu); //add to JDesktopPane
gu.setSize(400, 300);
gu.setVisible(true);
gu.readMatches();//this function takes ages
gu.setMatch("Updating database...");//this is some output to the user, displays info in the internal frame
//try and insert into database
for(Match m : gu.getMatches()){
db.insertMatch(m);
}
gu.setMatch("DONE"); //now it shows the frame, way too late
}
메소드 gu.readMatches()는, 실행하는 데 시간이 오래 걸린다는 진행. 그러나이 업데이트 기능이 완료 될 때까지 프레임이 표시되지 않습니다!
그것은는, setVisible처럼 (사실은)는 JFrame의 때
그것은 절대적으로 괜찮 았는데 ... 기능이 끝날 때까지 기다리고 있습니다. 이 원인이되는 JInternalFrame의 이상한 속성이 있습니까?건배
워커 스레드가 해결했습니다. 건배! –