Guten Tag,
ich habe da ein kleines Problem mit jFreeChart. Ich erstelle mir ein Panel und erstelle darauf ein jFreeChart, soweit so gut. Da wird mir des Chart auch ohne Probleme angezeigt. Wenn ich nun via Thread dem Dataset Daten hinzufüge verschwindet des Chart und taucht nicht mehr auf.
Vielleicht könnte mir einer von euch sagen was ich hier falsch mache ?!
Ich hoffe das mir jemand helfe kann
ich habe da ein kleines Problem mit jFreeChart. Ich erstelle mir ein Panel und erstelle darauf ein jFreeChart, soweit so gut. Da wird mir des Chart auch ohne Probleme angezeigt. Wenn ich nun via Thread dem Dataset Daten hinzufüge verschwindet des Chart und taucht nicht mehr auf.
Vielleicht könnte mir einer von euch sagen was ich hier falsch mache ?!
Java:
public class TestPanel extends JPanel{
private Daten daten;
private Boolean isRunning;
class Daten extends Thread{
public Daten() {
}
@Override
public void run() {
super.run();
try {
_run();
} catch ( Exception e ) {
e.printStackTrace();
}
}
private void _run() {
while (isRunning){
lastValue = holeDaten();
series.add(new Millisecond(), lastValue);
}
}
}
private static final long serialVersionUID = 1L;
private TimeSeries series;
private double lastValue = 0.0;
@SuppressWarnings("deprecation")
public TestPanel ( ) {
super(new BorderLayout());
this.setLayout( new BorderLayout( 2, 2 ) );
this.series = new TimeSeries("Random Data", Millisecond.class);
TimeSeriesCollection dataset = new TimeSeriesCollection(this.series);
JFreeChart chart = createChart(dataset);
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(640, 150));
this.add(chartPanel);
isRunning = false;
}
public void startTestPanel(){
daten = new Daten();
isRunning = true;
daten.start();
}
public void stopTestPanel(){
if( isRunning){
isRunning = false;
daten.interrupt();
}
}
private JFreeChart createChart( XYDataset dataset) {
final JFreeChart result = ChartFactory.createTimeSeriesChart("", "", "", dataset, false, false, false);
final XYPlot plot = result.getXYPlot();
ValueAxis axis = plot.getDomainAxis();
axis.setAutoRange(true);
axis.setFixedAutoRange(1000.0); // 60 seconds
axis = plot.getRangeAxis();
axis.setRange(0.0, 200.0);
return result;
}
}
Ich hoffe das mir jemand helfe kann