2016-08-24 11 views
0

を働いていない私は、このパネルを得た:はJPanelのにChartPanelを追加

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の実装内にあることはかなり確信しています。

誰かが私に何かポインタを与えることができますか? (他のパネルは今まで問題がないようです)

+1

なぜコンポーネントを追加した後にレイアウトを設定していますか? add(CP、..)の前にinitComponents()を呼び出す必要がありますか? –

答えて

2

新しいビューコンポーネント、つまりChartPanelを動的に既存のコンテナに追加しようとしているようです。 add(),validate()およびrepaint()を使用してランタイム時に新しいコンポーネントを追加することは、技術的にはpossibleですが、アプリケーションの進化に伴って結果のスケールが悪くなります。あるいは

hereに示すように、囲んでいる容器にpack()を呼び出す前ビューコンポーネントを追加し、新しいデータが到着すると、対応するモデルを更新します。リスニングビューはそれに応じて更新されます。複数のストリップチャートを表示した関連例をhereと示し、以下に示します。必要に応じて、setChart()を使用してチャートパネルの囲みチャートをいつでも置き換えることができます。最後に、別のチャートで異なるコントロールが必要な場合は、CardLayoutを検討してください。

​​

関連する問題