2012-03-13 42 views
1

我已經使用netbeans gui生成器生成了一個gui。我有兩個面板,其中一個我想顯示一個chartpanel。通過NetBeans的生成的代碼是:如何在由NetBeans生成的Jpanel中顯示JfreeChart(ChartPanel)

private void initComponents() { 

     jPanel1 = new javax.swing.JPanel(); 

     org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1); 
     jPanel1.setLayout(jPanel1Layout); 
     jPanel1Layout.setHorizontalGroup(
      jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 
      .add(0, 394, Short.MAX_VALUE) 
     ); 
     jPanel1Layout.setVerticalGroup(
      jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 
      .add(0, 294, Short.MAX_VALUE) 
     ); 

     org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this); 
     this.setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 
      .add(0, 400, Short.MAX_VALUE) 
      .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 
       .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() 
        .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
        .addContainerGap())) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 
      .add(0, 300, Short.MAX_VALUE) 
      .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 
       .add(layout.createSequentialGroup() 
        .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
        .addContainerGap())) 
     ); 
    } 

我做了什麼,添加chartpanel到JPanel的是:

TimeSeriesCollection dataset = new TimeSeriesCollection(); 
      for (int i = 0; i < 5; i++) { 
       TimeSeries pop = new TimeSeries("try "+i, Day.class); 
       pop.add(new Day(10+i, 1+i, 2004+i), 100*(i+2)); 
       pop.add(new Day(10+1*i, 1+2+i, 2004+i+1), 150*(i+2)); 
       pop.add(new Day(10+2*i, 1+2*i, 2004+i+2), 150*(i+3)); 
       pop.add(new Day(10+3*i, 1+2*i, 2004+i+3), 150*(i+4)); 
       pop.add(new Day(10+4*i, 1+2*i, 2004+i+10), 150*(i+5)); 
       dataset.addSeries(pop); 
      } 
      TimeSeries pop = new TimeSeries("Try asjhaihsiuahsiuahiushaiushiauhsiuhasiua"+100, Day.class); 
      int i=5; 
       pop.add(new Day(1, 1+i, 2004+i), 100*(i+2)); 
       pop.add(new Day(2, 1+2+i, 2004+i+1), 150*(i+2)); 
       pop.add(new Day(3, 1+2*i, 2004+i+2), 150*(i+3)); 
       pop.add(new Day(4, 1+2*i, 2004+i+3), 150*(i+4)); 
       pop.add(new Day(5, 1+2*i, 2004+i+10), 1500*(i+5)); 
       dataset.addSeries(pop); 
      JFreeChart chart = ChartFactory.createTimeSeriesChart(
        "Population of CSC408 Town", 
        "Date", 
        "Population", 
        dataset, 
        true, 
        true, 
        false); 
      ChartPanel p = new ChartPanel(chart); 

      jPanel1.add(p); 

但chartpanel不會顯示裏面的JPanel ..我能做些什麼呢?你可以幫我嗎?

+0

我不是一個Swing專家,但可能是因爲Netbeans的建成的GroupLayout有沒有地方留給你的圖表 - 所以當你添加它時,它在那裏,但不可見...也許嘗試'jPanel1.setLayout(new xxx)',然後再添加圖表以查看它是否在那裏。如果它是你知道問題的地方...不知道你可以使用什麼xxx,也許只是一個默認的'新的GroupLayout()'將工作 – assylias 2012-03-13 18:35:13

+0

我嘗試ChartPanel p = new ChartPanel(圖表); jPanel1.setLayout(new BorderLayout()); jPanel1.add(p,BorderLayout.CENTER);但沒有:( – JackTurky 2012-03-13 19:51:07

回答

0

在您的NetBeans面板中將佈局設置爲BorderLayout(通過在設計預覽中右鍵單擊佈局,然後設置佈局,或從代碼Panel.setLayout中執行此操作),之後當您要顯示圖表面板時,只需添加圖表面板進入父面板並要求重繪。

netbeansPanel.add(charPanel, BorderLayout.CENTER); 
netbeansPanel.validate(); 

也可以卸下面板的情況下,如果要更新新的圖表:

netbeansPanel.removeAll(); 
netbeansPanel.add(charPanel); 
netbeansPanel.validate(); 
+0

如果我做尺寸d =新尺寸(300,200); p.setSize(d); p.setPreferredSize(d); BorderLayout layout = new BorderLayout(); this.setLayout(layout); this.add(p,BorderLayout.CENTER);它的效果更好,但如果我使用this.getSize()它返回維0,0 ..我不知道爲什麼... – JackTurky 2012-03-13 21:28:55

+0

爲什麼你想打電話給這個。 getSize()?這是父組件的大小,你應該在設置父面板佈局後添加新的面板,並且佈局管理器將爲你處理大小 – 2012-03-13 21:57:00

+0

它不會像你說的那樣工作。我嘗試使用jPanel1大小來設置圖表的維數,但是什麼都沒有... – JackTurky 2012-03-13 22:06:33

相關問題