I've tried looking for answers to get this working but haven't managed to do so and I am about to lose my mind so here goes my question.
I've recently downloaded JFreeChart to create so charts and implement them in the GUI I had. Here's the GUI and the panel where I want to insert the graph (marked in white):
reports1 http://www.freeimagehosting.net/newuploads/eff3r.png reports2 http://www.freeimagehosting.net/newuploads/v5sty.png
I have used NetBeans editor to construct the GUI and a JFreeChart example available online. Below is the code for my GUI:
import java.awt.Color;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.math.BigDecimal;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.util.Rotation;
public class Report extends JFrame implements Defaults {
public MMap j1map,j2map,j3map;
public int total_stations = 0, total_jobs = 0, total_parts = 0;
BigDecimal[] j1_systimebig, j1_worktimebig, j1_idletimebig, j1_queuetimebig,
j2_systimebig, j2_worktimebig, j2_idletimebig, j2_queuetimebig,
j3_systimebig, j3_worktimebig, j3_idletimebig, j3_queuetimebig;
public String sim_time;
BigDecimal systime = new BigDecimal(0);
BigDecimal worktime = new BigDecimal(0);
BigDecimal idletime = new BigDecimal(0);
BigDecimal queuetime = new BigDecimal(0);
/**
* Creates new form Report
*/
public Report() {
//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle(TITLE_Report);
validate();
setResizable(false);
setVisible(true);
//setLocationRelativeTo(null);
initComponents();
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
e.getWindow().dispose();
}
}
);
centertables();
//JLayeredPane layeredPane = new JLayeredPane();
PieChart demo = new PieChart("Which operating system are you using?");
demo.setOpaque(true);
demo.setBounds(0, 0, 300, 300);
demo.setFocusable(true);
demo.setBackground(Color.gray);
demo.setBorder(BorderFactory.createLineBorder(Color.black, 1));
//start();
demo.setDoubleBuffered(true);
//demo.pack();
//demo.setVisible(true);
//PieChart("teste");
chartPanel1.add(demo, new Integer(0));
//layeredPane.add(demo, new Integer(0));
//this.getContentPane().add(jLayeredPane1);
}
/* *************************************
* GRAPHICS
*************************************/
public void PieChart(String chartTitle) {
System.out.println("PieChart");
// This will create the dataset
PieDataset dataset = createDataset();
// based on the dataset we create the chart
JFreeChart chart = createChart(dataset, chartTitle);
// we put the chart into a panel
ChartPanel chartPanel = new ChartPanel(chart);
// default size
chartPanel.setPreferredSize(new java.awt.Dimension(250, 270));
// add it to our application
//setContentPane(chartPanel);
//StationsPanelGraph.add(chartPanel);
//jLayeredPane1.add(chartPanel, new Integer(0), 0);
}
private PieDataset createDataset() {
System.out.println("PieDataset");
DefaultPieDataset result = new DefaultPieDataset();
result.setValue("Linux", 29);
result.setValue("Mac", 20);
result.setValue("Windows", 51);
return result;
}
private JFreeChart createChart(PieDataset dataset, String title) {
System.out.println("Create Chart");
JFreeChart chart = ChartFactory.createPieChart3D(title, // chart title
dataset, // data
true, // include legend
true,
false);
PiePlot3D plot = (PiePlot3D) chart.getPlot();
plot.setStartAngle(290);
plot.setDirection(Rotation.CLOCKWISE);
plot.setForegroundAlpha(0.5f);
return chart;
}
/* *************************************
* END GRAPHICS
*************************************/
}
And this is the result:
reports3 http://www.freeimagehosting.net/newuploads/unolz.png
I am initializing and adding the chart in the main class constructor and right below is the code for the graph. I had to refrain from posting the entire code as it went above the character limits, however here is an url for the complete code (with the Swing components initialization by NetBeans): http://tny.cz/8a4e8b2f
Any hint for solutions?
THanks in advance and let me know if anything else is needed.