Either I have a really stupid error in my code that I can't see or it's a bug. Just try the demo.
Code: Select all
package bugfinder;
import java.awt.BorderLayout;
import java.awt.Color;
import java.util.Arrays;
import javax.swing.JFrame;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CombinedDomainXYPlot;
import org.jfree.chart.plot.CombinedRangeXYPlot;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.xy.DefaultXYDataset;
import org.jfree.util.ArrayUtilities;
/**
*
* @author Kieffer
*/
public class CombinedRangeLegendBug extends JFrame{
/** Creates a new instance of Main */
public CombinedRangeLegendBug() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
double[] time = new double[] {0, 1, 2, 3};
double[][] data = new double [][] {{0, 1, 2, 3}, {1, 2, 3, 4}, {2, 3, 4, 5}};
DefaultXYDataset[] dataset = new DefaultXYDataset[3];
XYPlot[] plots = new XYPlot[3];
NumberAxis[] xAxes = new NumberAxis[3];
NumberAxis yAxis = new NumberAxis("yAxis");
CombinedRangeXYPlot plot = new CombinedRangeXYPlot(yAxis);
//Datasets, Formats, Plots
for (int i = 0; i < 3; i++) {
xAxes[i] = new NumberAxis("xAxis");
dataset[i] = new DefaultXYDataset();
dataset[i].addSeries("series_"+i, new double[][] {time, data[i]});
plots[i] = new XYPlot();
plots[i].setDataset(dataset[i]);
plots[i].setDomainAxis(xAxes[i]);
plot.add (plots[i]);
}
XYLineAndShapeRenderer xylasr = new XYLineAndShapeRenderer(true, false);
plot.setRenderer(xylasr);
JFreeChart chart = new JFreeChart("Legends test", plot);
chart.setBackgroundPaint(Color.WHITE);
LegendTitle legend = chart.getLegend();
legend.setBorder(0.0, 0.0, 0.0, 0.0);
ChartPanel cp = new ChartPanel(chart);
this.setLayout(new BorderLayout());
((BorderLayout)(this.getLayout())).setVgap(20);
this.setBackground(Color.WHITE);
this.add(cp, BorderLayout.CENTER);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
CombinedRangeLegendBug m = new CombinedRangeLegendBug();
m.setVisible(true);
m.pack();
}
}