私はこれを機能させるための答えを探しようとしましたが、うまくいきませんでした。私は気が狂いそうなので、ここに私の質問があります。
最近、JFreeChartをダウンロードしてチャートを作成し、持っていたGUIに実装しました。グラフを挿入するGUIとパネル(白でマーク)は次のとおりです。
reports1 http://www.freeimagehosting.net/newuploads/eff3r.png reports2 http://www.freeimagehosting.net/newuploads/v5sty.png
NetBeansエディタを使用して、オンラインで利用できるGUIとJFreeChartの例を作成しました。以下は私の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
*************************************/
}
そしてこれが結果です:
レポート3http://www.freeimagehosting.net/newuploads/unolz.png
メインクラスのコンストラクターでチャートを初期化して追加しています。すぐ下にグラフのコードがあります。コードが文字数制限を超えたため、コード全体を投稿することは控えなければなりませんでしたが、完全なコードのURL(NetBeansによるSwingコンポーネントの初期化を含む)は次のとおりです。http://tny.cz/8a4e8b2f
解決策のヒントはありますか?
事前に感謝し、他に何か必要なことがあれば教えてください。