我得到了这个面板:
public class StripchartPanel extends javax.swing.JPanel {
public StripchartPanel() {
XYSeries series = new XYSeries("XYGraph");
series.add(1, 1);
series.add(1, 2);
series.add(2, 1);
series.add(3, 9);
series.add(4, 10);
// Add the series to your data set
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series);
// Generate the graph
JFreeChart chart = ChartFactory.createXYLineChart(
"XY Chart", // Title
"x-axis", // x-axis Label
"y-axis", // y-axis Label
dataset, // Dataset
PlotOrientation.VERTICAL, // Plot Orientation
true, // Show Legend
true, // Use tooltips
false // Configure chart to generate URLs?
);
ChartPanel CP = new ChartPanel(chart);
this.add(CP, BorderLayout.CENTER);
this.validate();
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
setLayout(new java.awt.BorderLayout());
}// </editor-fold>
}
当我将此面板添加到 jFrame 时,它不显示图表。
我非常有信心问题出在 jPanel 实现中。
有人可以给我一些指导吗? (其他面板目前好像没有问题)
最佳答案
看起来您正在尝试将新的 View 组件(即 ChartPanel
)动态添加到现有容器中。虽然技术上是possible使用 add()
、validate()
和 repaint()
在运行时添加新组件,随着应用程序的发展,结果的扩展性很差。
或者,在封闭容器上调用 pack()
之前添加 View 组件,如图 here ,并在新数据到来时更新相应的模型;监听 View 将自行更新作为响应。显示多个带状图的相关示例如 here并如下图所示。如有必要,您始终可以使用 setChart()
替换图表面板中包含的图表。最后,考虑CardLayout
如果不同的图表需要不同的控件。
关于java - 将 ChartPanel 添加到 jPanel 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39118012/