饼图到一个 JPanel netbeans



>我正在尝试向我的 ui 添加一些图形图表 UI 有一个单独的按钮,单击时可以查看饼图 图表应该出现在面板中 我试过这段代码

DefaultPieDataset defaultPieDataset = new DefaultPieDataset();
defaultPieDataset.setValue("Monday", new Integer(0));
defaultPieDataset.setValue("Tuesday", new Integer(2));
defaultPieDataset.setValue("Wednesday", new Integer(1));
defaultPieDataset.setValue("Thursday", new Integer(2));
defaultPieDataset.setValue("Friday", new Integer(0));
defaultPieDataset.setValue("Saturday", new Integer(3));
defaultPieDataset.setValue("Sunday", new Integer(2));
JFreeChart chart = ChartFactory.createPieChart(Daily Usage", defaultPieDataset, true, true, true);
PiePlot p = (PiePlot)chart.getPlot();
p.setDirection(Rotation.CLOCKWISE);
ChartFrame frame = new ChartFrame("Daily Usage", chart);
frame.setVisible(true);
frame.setSize(500,500);
frame.setLocationRelativeTo(null);

但这使用框架而不是面板,有什么方法可以在 jPanel 中获取此 O 显示。我没有使用任何框架

您可以将图表添加到图表面板,而不是框架,您将有一个JPanel

下面是一个包含典型 JPanel 的JFrameChartPanel的完整示例:

public class ChartPanelExample extends JFrame {
public ChartPanelExample() {
super("");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
JPanel topPanel = new JPanel(new FlowLayout());
JButton button = new JButton("Something");
topPanel.add(button);
JLabel label = new JLabel("This is another JPanel");
topPanel.add(label);
add(topPanel, BorderLayout.PAGE_START);
DefaultPieDataset defaultPieDataset = new DefaultPieDataset();
defaultPieDataset.setValue("Monday", new Integer(0));
defaultPieDataset.setValue("Tuesday", new Integer(2));
defaultPieDataset.setValue("Wednesday", new Integer(1));
defaultPieDataset.setValue("Thursday", new Integer(2));
defaultPieDataset.setValue("Friday", new Integer(0));
defaultPieDataset.setValue("Saturday", new Integer(3));
defaultPieDataset.setValue("Sunday", new Integer(2));
JFreeChart chart = ChartFactory.createPieChart("Daily Usage", defaultPieDataset, true, true, true);
PiePlot p = (PiePlot) chart.getPlot();
p.setDirection(Rotation.CLOCKWISE);
ChartPanel chartPanel = new ChartPanel(chart);
add(chartPanel, BorderLayout.CENTER);
setLocationByPlatform(true);
pack();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new ChartPanelExample().setVisible(true));
}
}

最新更新