스윙 앱에 문제가 있습니다.최소화 된 경우 스윙 앱이 다운 됨
나는 내부에 for 루프가 있으며 300+ oracle 데이터베이스 요청을 시작하고 결과로 여러 개의 JTable
을 채 웁니다. SwingWorker
이 있습니다.
스윙 앱 창을 최소화하지 않거나 Windows 탐색기에 부분적으로 표시되는 경우 일괄 처리가 정상적으로 완료됩니다. 이제 앱을 최소화 한 다음 스윙 앱으로 돌아 가면 얼어 붙습니다.
기본 윤곽선과 구성 요소의 색상이 표시됩니다. 대부분의 창은 배경색 (검은 색)으로 설정되며 텍스트는 표시되지 않습니다. 응용 프로그램을 죽일 수있는 유일한 방법은 프로세스를 죽이는 것입니다. 'X'버튼을 클릭해도 윈도우가 닫히지 않습니다.
이것은 일반적인 문제입니까? 어떻게 그것을 막을 수 있습니까? 배치 노동자 내부
루프 :
for(int i=1; i<=maxDepth; i++){
String[] result = getAllLists(database, i);
for(int j=0; j<result.length; j++){
String period=result[j];
for(String name : names){
System.out.println("New Query: "+name+ " " + period + " | " + "Loading " + (days) + " days x " + years + " years --- ");
if(isValid(period,name)){
List<TickHistory> queryResult = model.getByDaysMultiple(name,period,days+mod+daysHeadroom,years, false);
getModelTableData(name, period, DatabaseHelpers.dateToString(lastCob), years,days,queryResult);
populatePricesTable(queryResult, days, false);
view.setNameText(name);
view.setPeriodText(period);
}else{
System.out.println("query invalid");
}
}
}
}
몇 가지 코드를 알려주십시오. 아마도 SwingUtilities.invokeLater()가 없습니다. jvisualvm으로 앱을 확인하는 것도 도움이 될 수 있습니다. –
예외가 있습니까? 'publish'와'process'를 올바르게 사용하고 있습니까? –
@TamasRev 메인 프레임, 컨트롤러 및 데이터베이스에 연결하는 데 사용하는 개체를 만드는 주 프로세스에서 invokelater를 사용합니다. – LucasSeveryn