java - 饼图到 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);
但这使用框架而不是面板有没有办法让这个o显示在jpanel中。我没有使用任何框架
解决方案
您可以将图表添加到ChartPanel,而不是框架,您将拥有一个JPanel
.
这是一个包含典型 JPanel的ChartPanel
内部的完整示例:JFrame
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));
}
}
推荐阅读
- python - 为什么我不能在 anaconda 中同时使用 matplotlib 和 keras?
- python - ModuleNotFoundError:尝试从 Pillow 导入 ImageCms 时没有名为“_util”的模块
- python - 使用 Fabric 获取远程服务器的环境变量
- r - 有条件和 tabsetpanel 没有按预期工作的闪亮
- r - 使用粘贴折叠多个向量
- google-bigquery - BigQuery:在重复记录中转换重复记录
- r - 使用 R simmer 包的离散事件模拟 (DES)
- docker - 在一个容器中运行多个类似的进程是否有意义?
- eclipse - 尝试使用 Buckminster 更新 p2 站点时出错
- airflow - 气流跳过任务的最佳方式?