【问题标题】:Adding ChartPanel to jPanel not working将 ChartPanel 添加到 jPanel 不起作用
【发布时间】:2016-08-24 08:20:05
【问题描述】:

我得到了这个面板:

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 实现中。

谁能给我一些指导。 (其他面板到现在好像没有问题)

【问题讨论】:

  • 添加组件后为什么要设置布局?是否应该在 add(CP, ..) 之前调用 initComponents()?

标签: java swing jpanel jfreechart


【解决方案1】:

您似乎正在尝试向现有容器动态添加新的视图组件,即ChartPanel。尽管在运行时使用add()validate()repaint() 添加新组件在技术上是possible,但随着应用程序的发展,结果的扩展性很差。

或者,添加视图组件before在封闭容器上调用pack(),如图here,并在新数据到达时更新相应的模型;监听视图将更新自身作为响应。显示多个条形图的相关示例显示为here,如下图所示。如有必要,您始终可以使用setChart() 替换图表面板的随附图表。最后,如果不同的图表需要不同的控件,请考虑CardLayout

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-20
    • 2015-02-27
    • 2013-09-19
    • 2016-07-23
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    相关资源
    最近更新 更多