2012-03-13 69 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