java - JPanel 被传递为 null

标签 java swing netbeans

我有一个类 DynamicDataDemo,它有一个空指针捕获。但是我不明白为什么 jPanel 被传递为空。它由 netbeans 初始化为边框布局,并且还声明了大小。

public DynamicDataDemo(final String title){
this(title,null);
}    

public DynamicDataDemo(final String title, JPanel panel){
super(title);
setContentPane(initContents(panel));
}

public JPanel initContents(JPanel contentPanel){
    if (contentPanel == null){
        System.out.print("You are Here");
        contentPanel = new JPanel(new BorderLayout());
    }


    this.series = new TimeSeries("Data", Millisecond.class);
    final TimeSeriesCollection dataset = new TimeSeriesCollection(this.series);
    final JFreeChart chart = createChart(dataset);

    final ChartPanel chartPanel = new ChartPanel(chart);
    contentPanel.setLayout(new BorderLayout());
    contentPanel.removeAll();
    contentPanel.add(chartPanel, BorderLayout.CENTER);
    contentPanel.validate();
    return contentPanel;              

}

在我的主课中,我调用

Final DynamicDataDemo dynamicPlot = new DynamicDataDemo("nameOfPlot", jPanel1);

非常感谢任何建议或解决方案!

以下代码由 netBeans 生成:

private void initComponents() {

    jPanel1 = new javax.swing.JPanel();
    jPanel2 = new javax.swing.JPanel();

    jPanel1.setBackground(new java.awt.Color(0, 0, 0));
    jPanel1.setLayout(new java.awt.BorderLayout());

    jPanel2.setBackground(new java.awt.Color(0, 0, 0));
    jPanel2.setLayout(new java.awt.BorderLayout());
}

private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
// End of variables declaration                   

我写的代码:

final DynamicDataDemo dynamicEyePlot = new DynamicDataDemo("Eye Height", jPanel1);
final DynamicDataDemo dynamicGainPlot = new DynamicDataDemo("Gain",jPanel2);

最佳答案

只需更改您的代码,如下所示。希望对您有所帮助。

    public DynamicDataDemo(final String title) {
        this(title,null);
    }

    public DynamicDataDemo(final String title, JPanel panel) {
        super(title);
        setContentPane(initContents(panel));
    }

    public JPanel initContents(JPanel contentPanel) {
        if (contentPanel == null) {
            contentPanel = new JPanel(new BorderLayout());
        }
        this.series = new TimeSeries("Data", Millisecond.class);
        final TimeSeriesCollection dataset = new TimeSeriesCollection(this.series);
        final JFreeChart chart = createChart(dataset);
        final ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(800, 400));
        contentPanel.setLayout(new BorderLayout());
        contentPanel.add(chartPanel);
        return contentPanel;
    }

关于java - JPanel 被传递为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37401698/

相关文章:

java - 创建火车线路上所有车站的距离图

java - 动态 UI 生成 - Java

java - 当我在 Netbeans 中更改模板时,为什么没有任何反应?

java - 无法执行目标 org.apache.maven.plugins :maven-clean-plugin:2. 4.1:clean

Java按原样打印一个巨大的字符串数组

java - 如何开发视频应用程序的屏幕捕获

java - 如何获取手机的通话状态

Java:在字段中显示actionEvent

java - 贪吃蛇游戏问题!!! java - swing - Jframe

java - GUI 中显示的 vector 图形