Servus,
ich erstelle mehrere JInternalFrames auf einer JDesktopPane welche ich dann mit Charts fülle. Jetzt möchte ich das Ganze so umsetzen das sich die Charts auch von alleine aktualisieren (also ohne komplett alles neu erstellen mit removeAll und add, das funktioniert nämlich), dazu nutze ich einen SwingWorker mit
Meine Idee ist alle Komponenten auf der DesktopPane zu durchlaufen und erst einmal die Frames raus suchen, das ist auch kein Problem. Dann suche ich auf den jeweiligen Frames nach den JFreeChart Komponenten (ist pro Frame jeweils nur einmal vorhanden)
Jetzt benötige ich die TimeSeries um denen dann die Werte hinzu zu fügen und hier hapert es. Es werden die Serien zwar gefunden aber der SwingWorker steigt kommentarlos aus und ruft gleich done() auf.
Jemand eine Idee ?
ich erstelle mehrere JInternalFrames auf einer JDesktopPane welche ich dann mit Charts fülle. Jetzt möchte ich das Ganze so umsetzen das sich die Charts auch von alleine aktualisieren (also ohne komplett alles neu erstellen mit removeAll und add, das funktioniert nämlich), dazu nutze ich einen SwingWorker mit
Java:
protected Void doInBackground() throws Exception {
while (!this.isCancelled()) {
startChartMonitoring();
Thread.sleep(1000);
}
return null;
}
Meine Idee ist alle Komponenten auf der DesktopPane zu durchlaufen und erst einmal die Frames raus suchen, das ist auch kein Problem. Dann suche ich auf den jeweiligen Frames nach den JFreeChart Komponenten (ist pro Frame jeweils nur einmal vorhanden)
Jetzt benötige ich die TimeSeries um denen dann die Werte hinzu zu fügen und hier hapert es. Es werden die Serien zwar gefunden aber der SwingWorker steigt kommentarlos aus und ruft gleich done() auf.
Jemand eine Idee ?
Java:
for(Component chartPanel : ((JInternalFrame) internalFrameToUse).getContentPane().getComponents()){
// get the ChartPanel
if(chartPanel instanceof ChartPanel){
// get the Chart
JFreeChart jFreeChart = ((ChartPanel) chartPanel).getChart();
int i = 0;
while(i < jFreeChart.getXYPlot().getDataset().getSeriesCount()){
// get the TimeSeries(Collection)
String timeSeriesName = jFreeChart.getXYPlot().getDataset().getSeriesKey(i).toString();
// check if the READING is equal the name of the TimeSerie --> this work
System.out.println("READING: " + result.getString("READING") + " - Name of the TimeSerie: " + timeSeriesName);
if(result.getString("READING").equals(timeSeriesName)){
System.out.println("Add or Update the value");
// hier steigt der SwingWorker kommentarlos aus und ruft done() auf
((TimeSeries) jFreeChart.getXYPlot().getDataset().getSeriesKey(i)).addOrUpdate(new Second(myDate), result.getInt(6));
System.out.println("Das wird nicht mehr angezeigt");
if (result.getString("DEVICE").equals("Arbeitszimmer.Steckdose.PC")){
System.out.println(result.getString("TIMESTAMP") + " - READING: " + result.getString("READING") + " Value: " + result.getInt(6) +
" - Count: " + ((TimeSeries) jFreeChart.getXYPlot().getDataset().getSeriesKey(i)).getItemCount());
}
}
i++;
}
}
}