So fügen Sie eine JFreechart ein Panel?

Ich habe versucht, auf der Suche nach Antworten zu bekommen, diese funktioniert aber noch nicht gelungen und ich freue mich über meinen Verstand verlieren so, hier geht meine Frage.

Habe ich vor kurzem heruntergeladen JFreeChart erstellen, damit Diagramme und implementieren diese in der GUI, die ich hatte.
Hier ist die GUI und die Platte wo ich Sie einfügen möchten, aus dem Graphen (in weiß):

reports1 http://www.freeimagehosting.net/newuploads/eff3r.png
reports2 http://www.freeimagehosting.net/newuploads/v5sty.png

Habe ich verwendet NetBeans-editor zum erstellen der GUI und ein JFreeChart Beispiel online zur Verfügung.
Unten ist der code für meine 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
 *************************************/  

}

Und das ist das Ergebnis:

reports3 http://www.freeimagehosting.net/newuploads/unolz.png

Ich bin initialisieren und hinzufügen der Karte in der main-Klasse Konstruktor und rechts unten ist der code für das Diagramm. Ich hatte zu unterlassen, die Veröffentlichung der gesamte code, wie es ging über den Charakter Grenzen, allerdings ist hier eine url für den vollständigen code (mit dem Swing-Komponenten-Initialisierung von NetBeans): http://tny.cz/8a4e8b2f

Hinweise für Lösungen?

Vielen Dank im Voraus und lassen Sie mich wissen, wenn etwas anderes benötigt wird.

  • Die Lösung liegt wahrscheinlich in der Verwendung der richtigen layout beim hinzufügen der JFreeChart-panel (was ich glaube, ist nichts weiter als ein JPanel). Wenn Sie vertraut sind mit den verschiedenen layout-Managern, die für Sie verfügbar sind, es sollte eine triviale Angelegenheit für Sie in der Lage sein, um Ihre JFreeChart Komponente ausreichend und leicht, wo Sie es platzieren möchten.
  • Genau; org.jfree.chart.ChartPanel ist ein JPanel. Es hat eine org.jfree.chart.JFreeChart gerenderten in paintComponent(). Siehe auch diese Beispiel.
  • Als ich begann mit NetBeans, ich habe die schlechte Gewohnheit, mit es editor zur Gestaltung der GUI ist, was bedeutet, dass ich nicht vollständig verstehen, alle Konzepte, layouts einer von Ihnen. Ich werde schauen weiter in Sie!
Schreibe einen Kommentar