java - 将 ChartPanel 添加到 jPanel 不起作用

标签 java swing jpanel jfreechart

我得到了这个面板:

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如果不同的图表需要不同的控件。

image

关于java - 将 ChartPanel 添加到 jPanel 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39118012/

相关文章:

java - 内联复制粘贴 JEditorPane HTML

java - 字符串对象和字符串文字之间的区别

javascript - 正则表达式排除具有奇怪 URL 的链接

java - 如何使用 Java 将 JButton 放置在 JFrame 中的所需位置?

java - 如何在 parent 身上停止 JProgressBar?

java - 如何在Spring拦截器中使用@ExceptionHandler?

java - 当我在选择 0 索引的情况下删除和添加时,Swing JList 卡住

java - Nimbus 改变选项卡标题的颜色

java - JTabbedPane 不显示添加的其他选项卡

java - 尝试在不同的 JPanel 上重新绘制