2016-05-23 15 views
0

私は、DynamicDataDemoクラスを持っています.DynamicDataDemoにはnullポインタキャッチがあります。しかし、なぜjPanelがnullとして渡されているのか分かりません。これは、netbeansによって境界線レイアウトとして初期化され、サイズも宣言されます。私のメインクラスでJPanelがnullとして渡される

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); 
+0

あなたのjPanel1がnullの場合、あなたは私がjPanel1から取得する場所、私が表示さんか –

+0

からjPanel1を得たショー?私はjPanel1を宣言したメインクラスから渡しています。 – Emunzy

+0

は、どこからDynamicDataDemoを呼び出すか、どこに渡すかを示すパネルを表示します。私が見ているのは、新しいDynamicDataDemo( "nameOfPlot"、jPanel1)です。しかし、私はjPanel1が作成またはrefrencedされているかを確認したい。 –

答えて

1

ちょうど以下のようにコードを変更します。それが役に立てば幸い。

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; 
    } 
+0

解決策はnull例外をキャッチするのに適しており、自分のコードをコンパイルすることができます。しかし、私はjPanel1がnullとして渡されている理由を解決したい。しかし、ソリューションをありがとう。 – Emunzy

関連する問題