First at all, i'm german and my english isnt that good. i read several threads but they didnt help me out.
My problem is that my xylinechart don't update probably. After clcking on the Test-Button, the new value only appears when you click on the chart (?) and the y-axis doesnt extend automaticly. Maybe the dataset update is not correct ?
Here the code:
Code: Select all
package Example;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
public class Test4 extends JFrame {
private JPanel jContentPane = null;
private JButton jButton = null;
private ChartPanel chartPanel = null;
XYSeriesCollection dataset = new XYSeriesCollection();
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setBounds(new java.awt.Rectangle(15,9,109,20));
jButton.setText("Test");
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
dataset.getSeries(0).getDataItem(3).setY(400);
chartPanel.firePropertyChange("a",true,true);
}
});
}
return jButton;
}
private XYSeriesCollection createDataset() {
XYSeries series = new XYSeries("Series 1");
series.add(1, 0);
series.add(2, 0);
series.add(3, 0);
series.add(4, 0);
series.add(5, 0);
series.add(6, 0);
series.add(7, 0);
series.add(8, 0);
series.add(9, 0);
series.add(10, 0);
series.add(11, 0);
series.add(12, 0);
series.add(13, 0);
series.add(14, 300);
series.add(15, 0);
series.add(16, 0);
series.add(17, 0);
series.add(18, 0);
series.add(19, 0);
series.add(20, 0);
series.add(21, 0);
series.add(22, 0);
series.add(24, 0);
dataset.addSeries(series);
return dataset;
}
private JFreeChart getJFreeChart() {
JFreeChart chart = ChartFactory.createXYLineChart(
"XY Line Chart Test3", // chart title
"Stunde", // x axis label
"Daten", // y axis label
(XYDataset)createDataset(), // data
PlotOrientation.VERTICAL,
true, // include legend
true, // tooltips
false // urls
);
XYPlot plot = (XYPlot) chart.getPlot();
//plot.setDataset(1,dataset2);
XYItemRenderer r = plot.getRenderer();
XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r;
renderer.setDefaultShapesVisible(true);
renderer.setDefaultShapesFilled(true);
chart.getXYPlot().getDomainAxis().setRange(0,23);
return chart;
}
private ChartPanel getCreateChart() {
if (chartPanel == null) {
ChartPanel chartPanel = new ChartPanel(getJFreeChart());
chartPanel.setBounds(new java.awt.Rectangle(14,33,521,300));
}
return chartPanel;
}
private void initialize() {
this.setSize(547, 362);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
}
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
chartPanel = new ChartPanel(getJFreeChart());
chartPanel.setBounds(new java.awt.Rectangle(14,33,521,300));
jContentPane.add(chartPanel, null);
jContentPane.add(getJButton(), null);
}
return jContentPane;
}
public Test4() {
super();
initialize();
}
public static void main(String[] args) {
Test4 app = new Test4();
app.show();
}
}
Greets