gpt4 book ai didi

java - 如何在 NetBeans 项目中显示 JFreeChart

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:07:38 25 4
gpt4 key购买 nike

这与我昨天提出的问题类似,但更具体。将 JFreeChart 添加到已包含各种小部件的 NetBeans 项目的正确方法是什么?我的 updateChart() 隐藏了整个 JFrame。我想将 JFreeChart 添加到 JFrame。

public class MyClass extends javax.swing.JFrame implements TableModelListener {
public MyClass() {
initComponents();
...
updateChart();
}
private void updateChart() {
XYDataset dataset = createXYdataset();
JFreeChart chart = createChart(dataset);
JPanel chartPanel = new ChartPanel(chart);
setContentPane(chartPanel);
}
private XYDataset createXYdataset() {
XYSeries series = new XYSeries("");
int rows = jTable.getRowCount();
if (rows > 0) {
int ms = 0;
for (int row = 0; row < rows; row++) {
series.add(ms, 1);
ms += Integer.parseInt(
jTable.getValueAt(row, PULSE_ON).toString());
series.add(ms, 1);
series.add(ms, 0);
ms += Integer.parseInt(
jTable.getValueAt(row, PULSE_OFF).toString());
series.add(ms, 0);
}
}
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series);
return dataset;
}
private JFreeChart createChart(XYDataset dataset) {
JFreeChart chart = ChartFactory.createXYLineChart(
null, // chart title
"ms", // x axis label
null, // y axis label
dataset, // data
PlotOrientation.VERTICAL,
false, // include legend
true, // tooltips
false // urls
);
XYPlot plot = (XYPlot) chart.getPlot();
plot.setDomainPannable(true);
plot.setRangePannable(true);
plot.setRangeGridlinesVisible(false);
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
return chart;
}
}

更正后的代码:

private void updateChart() {
XYDataset dataset = createXYdataset();
JFreeChart chart = createChart(dataset);
JPanel chartPanel = new ChartPanel(chart);
chartPanel.setSize(jPanel1.getSize());
jPanel1.add(chartPanel);
jPanel1.getParent().validate();
}

最佳答案

My updateChart() hides the entire JFrame.

JFreeChart chart = createChart(dataset); 
JPanel chartPanel = new ChartPanel(chart);
setContentPane(chartPanel);

那是因为您正在用免费图表的面板替换框架的内容面板。

我不知道您使用的是什么布局管理器,但您需要将免费图表面板“添加”到包含所有其他组件的面板。因此,当您在 Netbeans 中设计通用表单时,您可能会在要添加免费图表面板的位置添加一个空面板。然后,当您添加免费图表面板时,代码将类似于:

emptyFreeChartPanel.add( chartPanel );
emptyFreeChartPanel.getParent().validate();

验证告诉 Swing 组件已经添加,因此将调用布局管理器。

关于java - 如何在 NetBeans 项目中显示 JFreeChart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3969203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com