2012-03-31 4 views
1

입력 스트림에서 읽고 데이터를 배열에 저장하고 있습니다. 이제 일부 테스트 조건 (그리고 입력 스트림이 완전히 읽히지 않지만 차트를 만들고 싶다면).for 루프에서 JfreeCharts 만들기

for (int i = 0; i < jsonMainArr.size(); i++) 
{ 
    JSONObject childJSONObject = jsonMainArr.getJSONObject(i); 
    String date1 = childJSONObject.getString("date"); 
    DateFormat forma=new SimpleDateFormat("yyyy-MM-dd"); 
    Date dre=forma.parse(date1); 
    d[i]=dre; 

    if(somecondition) 
    { 
     CandleStickChart chart = new CandleStickChart("Candle Stick Chart"); 
     chart.pack(); 
     RefineryUtilities.centerFrameOnScreen(chart); 
     chart.setVisible(true); 
    } 
} 

이제 dre이 특정 데이터 인 경우 차트를 표시하려고합니다. 다른 데이터 (다음 회사 데이터는 여전히 구문 분석되어야 함) 때문에 for 루프에서 벗어나고 싶지 않습니다. 나는 이것이 루프 내부에서 작동하지 않고 그 밖에서 만 작동한다는 것을 알아 챘다. 이 어려움을 극복하기 위해 내가 뭘 할 수 있을까.

+0

여기에 설명이 필요합니다. 차트를 awt/swing 프레임에 표시하고 있습니까? 이 코드를 실행시키는 원인은 무엇입니까 (클릭과 같은 UI 이벤트입니까?)? 얼마나 오랫동안 그래프를 표시 하시겠습니까? 사용자가 확인/종료하도록 하시겠습니까? – daveb

+0

현재 디버깅 중이므로 테스트 조건없이 주를 실행할 때 트리거됩니다. 응용 프로그램 프레임을 확장하고 setCOntentPane 메서드를 사용하여 그래프를 표시하고 있습니다. – user1092042

+0

'add()'메소드가 "필요에 따라'contentPane'에 전달되도록 오버라이드되었습니다."- [JFrame] (http://docs.oracle.com/javase/6/docs/api/javax/swing/ JFrame.html). – trashgod

답변

2

다른 스레드에서 데이터 수집 루프를 실행하십시오 (예 : SwingWorker). 완성 된 모델에 대해서만 publish()을 호출하고 표시하려는 모델을 표시하십시오. 차트를 process()에 표시하십시오.

+0

나는 그것을 밖으로 시험하게한다. – user1092042