2012-03-31 5 views
1

Ich lese aus einem Eingabedatenstrom und speichert Daten in einem Array. Nun, wenn eine Testbedingung vorliegt (und obwohl der Eingangsstrom nicht vollständig gelesen wird, möchte ich ein Diagramm erstellen). JetztErstellen von JfreeCharts in einer for-Schleife

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); 
    } 
} 

wenn dre ist eine besondere Daten, möchte ich das Diagramm angezeigt werden soll. Ich will nicht aus der for-Schleife ausbrechen, weil die anderen Daten (die nächsten Firmen-Daten noch analysiert werden müssen). Ich habe bemerkt, dass dies nicht innerhalb der Schleife funktioniert und nur außerhalb funktioniert. Was kann ich tun, um diese Schwierigkeit zu überwinden?

+0

Einige Dinge müssen hier geklärt werden: Zeigen Sie das Diagramm auf einem Schwenkrahmen an? Was löst diesen Code aus? (Ist es ein UI-Ereignis wie ein Klick)? Wie lange möchtest du das Diagramm anzeigen? Möchten Sie, dass der Benutzer es bestätigt/schließt? – daveb

+0

Momentan debugge ich, also wird es ausgelöst, wenn ich das Haupt ohne Testbedingung laufe. Ich zeige das Diagramm an, indem ich den Anwendungsrahmen erweitere und die setCOntentPane-Methode verwende. – user1092042

+0

Die Methode 'add()' wurde "überschrieben", um sie bei Bedarf zum 'contentPane' weiterzuleiten." - [JFrame] (http://docs.oracle.com/javase/6/docs/api/javax/swing/ JFrame.html). – trashgod

Antwort

2

Führen Sie Ihre Datenerfassungsschleife in einem anderen Thread, z. B. SwingWorker. Rufen Sie publish() nur für abgeschlossene Modelle auf und markieren Sie diejenigen, die Sie anzeigen möchten. Zeigen Sie das Diagramm in process() an.

+0

Lass mich das ausprobieren. – user1092042