title: How to update a JPanel with another JPanel from another class in the same project?
body: <p>I have created (with Netbeans) a JFrame and I put two JPanels (mainPanel and secondPanel)in it.
  One other class of the project returns a JPanel when I open a file using JFrame's Menu Bar.
  How do I update the mainPanel , so that it shows the JPanel that is returned from the other class of the project?
  Thank you.</p>
  
  <pre><code>/*
   * To change this template, choose Tools | Templates
   * and open the template in the editor.
   */
  package nysemarketpick;
  
  import java.io.File;
  import javax.swing.JFileChooser;
  import javax.swing.JFrame;
  
  /**
   *
   * @author skiabox
   */
  public class MainForm extends JFrame {
  
  /**
   * Creates new form MainForm
   */
  public MainForm() {
      initComponents();
  }
  
  /**
   * This method is called from within the constructor to initialize the form.
   * WARNING: Do NOT modify this code. The content of this method is always
   * regenerated by the Form Editor.
   */
  @SuppressWarnings("unchecked")
  // &lt;editor-fold defaultstate="collapsed" desc="Generated Code"&gt;
  private void initComponents() {
  
      fileChooser = new javax.swing.JFileChooser();
      toolbar = new javax.swing.JToolBar();
      shortButton = new javax.swing.JButton();
      jSeparator1 = new javax.swing.JToolBar.Separator();
      midButton = new javax.swing.JButton();
      jSeparator2 = new javax.swing.JToolBar.Separator();
      longButton = new javax.swing.JButton();
      mainPanel = new javax.swing.JPanel();
      secondPanel = new javax.swing.JPanel();
      jLabel1 = new javax.swing.JLabel();
      jMenuBar1 = new javax.swing.JMenuBar();
      fileMenu = new javax.swing.JMenu();
      Open = new javax.swing.JMenuItem();
      Exit = new javax.swing.JMenuItem();
      optionsMenu = new javax.swing.JMenu();
      shortItem = new javax.swing.JMenuItem();
      midItem = new javax.swing.JMenuItem();
      longItem = new javax.swing.JMenuItem();
      toolsMenu = new javax.swing.JMenu();
      helpMenu = new javax.swing.JMenu();
  
      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
      setTitle("Nyse Stock Pick");
  
      toolbar.setFloatable(false);
      toolbar.setRollover(true);
  
      shortButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/nysemarketpick/S-orange-icon.png"))); // NOI18N
      shortButton.setText("Short-Term");
      shortButton.setFocusable(false);
      shortButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
      shortButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
      toolbar.add(shortButton);
      toolbar.add(jSeparator1);
  
      midButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/nysemarketpick/M-lg-icon.png"))); // NOI18N
      midButton.setText("Mid-Term");
      midButton.setFocusable(false);
      midButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
      midButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
      toolbar.add(midButton);
      toolbar.add(jSeparator2);
  
      longButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/nysemarketpick/L-blue-icon.png"))); // NOI18N
      longButton.setText("Long-Term");
      longButton.setFocusable(false);
      longButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
      longButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
      toolbar.add(longButton);
  
      org.jdesktop.layout.GroupLayout mainPanelLayout = new org.jdesktop.layout.GroupLayout(mainPanel);
      mainPanel.setLayout(mainPanelLayout);
      mainPanelLayout.setHorizontalGroup(
          mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
          .add(0, 0, Short.MAX_VALUE)
      );
      mainPanelLayout.setVerticalGroup(
          mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
          .add(0, 537, Short.MAX_VALUE)
      );
  
      org.jdesktop.layout.GroupLayout secondPanelLayout = new org.jdesktop.layout.GroupLayout(secondPanel);
      secondPanel.setLayout(secondPanelLayout);
      secondPanelLayout.setHorizontalGroup(
          secondPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
          .add(0, 240, Short.MAX_VALUE)
      );
      secondPanelLayout.setVerticalGroup(
          secondPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
          .add(0, 543, Short.MAX_VALUE)
      );
  
      jLabel1.setText("World Market Status");
      jLabel1.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
  
      fileMenu.setText("File");
  
      Open.setText("Open");
      Open.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent evt) {
              OpenActionPerformed(evt);
          }
      });
      fileMenu.add(Open);
  
      Exit.setText(" Exit");
      Exit.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(java.awt.event.ActionEvent evt) {
              ExitActionPerformed(evt);
          }
      });
      fileMenu.add(Exit);
  
      jMenuBar1.add(fileMenu);
  
      optionsMenu.setText("Options");
  
      shortItem.setText("Short-Term Moving Average");
      optionsMenu.add(shortItem);
  
      midItem.setText("Mid-Term Moving Average");
      optionsMenu.add(midItem);
  
      longItem.setText("Long-Term Moving Average");
      optionsMenu.add(longItem);
  
      jMenuBar1.add(optionsMenu);
  
      toolsMenu.setText("Tools");
      jMenuBar1.add(toolsMenu);
  
      helpMenu.setText("Help");
      jMenuBar1.add(helpMenu);
  
      setJMenuBar(jMenuBar1);
  
      org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
      getContentPane().setLayout(layout);
      layout.setHorizontalGroup(
          layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
          .add(layout.createSequentialGroup()
              .addContainerGap()
              .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                  .add(layout.createSequentialGroup()
                      .add(toolbar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                      .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 762, Short.MAX_VALUE)
                      .add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 182, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                      .add(354, 354, 354))
                  .add(layout.createSequentialGroup()
                      .add(6, 6, 6)
                      .add(mainPanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                      .add(18, 18, 18)
                      .add(secondPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                      .add(351, 351, 351))))
      );
      layout.setVerticalGroup(
          layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
          .add(layout.createSequentialGroup()
              .addContainerGap()
              .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
                  .add(toolbar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 25, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                  .add(jLabel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
              .add(12, 12, 12)
              .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                  .add(mainPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                  .add(secondPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
              .addContainerGap(33, Short.MAX_VALUE))
      );
  
      pack();
  }// &lt;/editor-fold&gt;
  
  private void ExitActionPerformed(java.awt.event.ActionEvent evt) {                                     
      // TODO add your handling code here:
      System.exit(0);
  }                                    
  
  private void OpenActionPerformed(java.awt.event.ActionEvent evt) {                                     
      // TODO add your handling code here:
      int returnVal = fileChooser.showOpenDialog(this);
      if (returnVal == JFileChooser.APPROVE_OPTION)
      {
          File file = fileChooser.getSelectedFile();
  
  
          //What to do with the file
          //remove current chart
          mainPanel.removeAll();
          //add new chart
          PriceVolumeChart chart = new PriceVolumeChart(file.getAbsolutePath());
  
          mainPanel.add(chart.getChart());
          mainPanel.validate();
      }
  }                                    
  
  /**
   * @param args the command line arguments
   */
  public static void main(String args[]) {
      /*
       * Set the Nimbus look and feel
       */
      //&lt;editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "&gt;
      /*
       * If Nimbus (introduced in Java SE 6) is not available, stay with the
       * default look and feel. For details see
       * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
       */
      try {
          for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
              if ("Nimbus".equals(info.getName())) {
                  javax.swing.UIManager.setLookAndFeel(info.getClassName());
                  break;
              }
          }
      } catch (ClassNotFoundException ex) {
          java.util.logging.Logger.getLogger(MainForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
      } catch (InstantiationException ex) {
          java.util.logging.Logger.getLogger(MainForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
      } catch (IllegalAccessException ex) {
          java.util.logging.Logger.getLogger(MainForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
      } catch (javax.swing.UnsupportedLookAndFeelException ex) {
          java.util.logging.Logger.getLogger(MainForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
      }
      //&lt;/editor-fold&gt;
  
      /*
       * Create and display the form
       */
      java.awt.EventQueue.invokeLater(new Runnable() {
  
          public void run() {
              new MainForm().setVisible(true);
          }
      });
  }
  // Variables declaration - do not modify
  private javax.swing.JMenuItem Exit;
  private javax.swing.JMenuItem Open;
  private javax.swing.JFileChooser fileChooser;
  private javax.swing.JMenu fileMenu;
  private javax.swing.JMenu helpMenu;
  private javax.swing.JLabel jLabel1;
  private javax.swing.JMenuBar jMenuBar1;
  private javax.swing.JToolBar.Separator jSeparator1;
  private javax.swing.JToolBar.Separator jSeparator2;
  private javax.swing.JButton longButton;
  private javax.swing.JMenuItem longItem;
  private javax.swing.JPanel mainPanel;
  private javax.swing.JButton midButton;
  private javax.swing.JMenuItem midItem;
  private javax.swing.JMenu optionsMenu;
  private javax.swing.JPanel secondPanel;
  private javax.swing.JButton shortButton;
  private javax.swing.JMenuItem shortItem;
  private javax.swing.JToolBar toolbar;
  private javax.swing.JMenu toolsMenu;
  // End of variables declaration
  }
  
  
  
  public class PriceVolumeChart
  {
  static FileReader fileReader;
  static File file;
  static TimeSeries t1 = new TimeSeries("49-day moving average");
  static String filename;
  
  JPanel myPanel;
  
  /**
   * Default constructor
   */
  public PriceVolumeChart(String absoluteFilePath)
  {
      //super(title);
      filename = absoluteFilePath;
      //JPanel panel = createDemoPanel();
      //panel.setPreferredSize(new Dimension(500, 270));
      //setContentPane(panel);
      myPanel = createDemoPanel();
      myPanel.setPreferredSize(new Dimension(500, 270));
  }
  
  
  //create price dataset
  //hard-coded here
  private static OHLCDataset createPriceDataset(String filename)
  {
      //the following data is taken from http://finance.yahoo.com/
      //for demo purposes...
  
  
      OHLCSeries s1 = new OHLCSeries(filename);
  
      try {
          BufferedReader in = new BufferedReader(new FileReader(filename));
          DateFormat df = new SimpleDateFormat("yyyyMMdd");
          String inputLine;
          in.readLine();
          while ((inputLine = in.readLine()) != null) {
              StringTokenizer st = new StringTokenizer(inputLine, ",");
              Date date       = df.parse( st.nextToken() );
              double open     = Double.parseDouble( st.nextToken() );
              double high     = Double.parseDouble( st.nextToken() );
              double low      = Double.parseDouble( st.nextToken() );
              double close    = Double.parseDouble( st.nextToken() );
              double volume   = Double.parseDouble( st.nextToken() );
              //double adjClose = Double.parseDouble( st.nextToken() );
              s1.add(new Day(date), open, high, low, close);
              t1.add(new Day(date), close);
          }
          in.close();
      }
      catch (Exception e) {
          e.printStackTrace();
      }
  
  
  
      OHLCSeriesCollection dataset = new OHLCSeriesCollection();
      dataset.addSeries(s1);
  
      return dataset;
  }
  
  
  //create volume dataset
  private static IntervalXYDataset createVolumeDataset(String filename)
  {
      //create dataset 2...
      TimeSeries s1 = new TimeSeries("Volume");
  
      try {
          BufferedReader in = new BufferedReader(new FileReader(filename));
          DateFormat df = new SimpleDateFormat("yyyyMMdd");
          String inputLine;
          in.readLine();
          while ((inputLine = in.readLine()) != null) {
              StringTokenizer st = new StringTokenizer(inputLine, ",");
              Date date = df.parse( st.nextToken() );
              st.nextToken();
              st.nextToken();
              st.nextToken();
              st.nextToken();
              double volume   = Double.parseDouble( st.nextToken() );
              //double adjClose = Double.parseDouble( st.nextToken() );
              s1.add(new Day(date), volume);
          }
          in.close();
      }
      catch (Exception e) {
          e.printStackTrace();
      }
  
  
  
      return new TimeSeriesCollection(s1);
  }
  
  
  private static JFreeChart createCombinedChart()
  {
      OHLCDataset data1 = createPriceDataset(filename);
  
      XYItemRenderer renderer1 = new HighLowRenderer();
      renderer1.setBaseToolTipGenerator(new StandardXYToolTipGenerator(StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT, new SimpleDateFormat("d-MMM-yyyy"), new DecimalFormat("0.00")));
      renderer1.setSeriesPaint(0, Color.blue);
      DateAxis domainAxis = new DateAxis("Date");
      NumberAxis rangeAxis = new NumberAxis("Price");
      rangeAxis.setNumberFormatOverride(new DecimalFormat("$0.00"));
      rangeAxis.setAutoRange(true);
      rangeAxis.setAutoRangeIncludesZero(false);
      XYPlot plot1 = new XYPlot(data1, domainAxis, rangeAxis, renderer1);
      plot1.setBackgroundPaint(Color.lightGray);
      plot1.setDomainGridlinePaint(Color.white);
      plot1.setRangeGridlinePaint(Color.white);
      plot1.setRangePannable(true);
  
      //Overlay the Long-Term Trend Indicator
      TimeSeries dataset3 = MovingAverage.createMovingAverage(t1, "LT", 49, 49);
      TimeSeriesCollection collection = new TimeSeriesCollection();
      collection.addSeries(dataset3);
      plot1.setDataset(1, collection);
      plot1.setRenderer(1, new StandardXYItemRenderer());
  
  
  
      //add a second dataset (volume) and renderer
      IntervalXYDataset data2 = createVolumeDataset(filename);
      XYBarRenderer renderer2 = new XYBarRenderer();
      renderer2.setDrawBarOutline(false);
      renderer2.setBaseToolTipGenerator(new StandardXYToolTipGenerator(StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT, new SimpleDateFormat("d-MMM-yyyy"), new DecimalFormat("0,000.00")));
      renderer2.setSeriesPaint(0, Color.red);
  
      XYPlot plot2 = new XYPlot(data2, null, new NumberAxis("Volume"), renderer2);
      plot2.setBackgroundPaint(Color.lightGray);
      plot2.setDomainGridlinePaint(Color.white);
      plot2.setRangeGridlinePaint(Color.white);
  
      //middle pane oscillators
      TimeSeries threeMA = MovingAverage.createMovingAverage(t1, "SL1", 3, 3);
      TimeSeries tenMA = MovingAverage.createMovingAverage(t1, "SL2", 10, 10);
  
      List&lt;TimeSeriesDataItem&gt; threeItemsList = new ArrayList&lt;TimeSeriesDataItem&gt;();
      List&lt;TimeSeriesDataItem&gt; tenItemsList = new ArrayList&lt;TimeSeriesDataItem&gt;();
      threeItemsList = threeMA.getItems();
      tenItemsList = tenMA.getItems();
  
      for (TimeSeriesDataItem item: threeItemsList)
      {
          System.out.println("three" + item.getValue().doubleValue() + " " + item.getPeriod().toString());
      }
  
      for (TimeSeriesDataItem item: tenItemsList)
      {
          System.out.println("ten" + item.getValue().doubleValue() + " " + item.getPeriod().toString());
      }
  
      TimeSeries slDataset = new TimeSeries("SL");
      int i = 0;
      //List&lt;TimeSeriesDataItem&gt; slItemsList = new ArrayList&lt;TimeSeriesDataItem&gt;();
      TimeSeriesDataItem myItem;
      Day threeDate;
  
      for (TimeSeriesDataItem item: threeItemsList)
      {
          //RegularTimePeriod variable = item.getPeriod();
          if (item.getPeriod().compareTo(tenItemsList.get(0).getPeriod()) &lt; 0)
          {
              continue;
          }
          else
          {
              double result = item.getValue().doubleValue() - tenItemsList.get(i).getValue().doubleValue();
              Day currentDay = (Day)item.getPeriod();
              myItem = new TimeSeriesDataItem(currentDay, result);
              slDataset.add(myItem);
  
              //slItemsList.add(myItem);
              i++;
          }
  
  
      }
  
      System.out.println("slDataset count : " + slDataset.getItemCount());
  
  
  
      TimeSeriesCollection collectionSL = new TimeSeriesCollection();
      collectionSL.addSeries(slDataset);
  
      //create middle line (ML)
      XYLineAndShapeRenderer rendererFinal = new XYLineAndShapeRenderer(true, false);
      rendererFinal.setBaseShapesVisible(false);
      TimeSeries ml = MovingAverage.createMovingAverage(slDataset, "ML", 16, 16);
      TimeSeriesCollection collectionML = new TimeSeriesCollection();
      collectionML.addSeries(ml);
  
      DateAxis domainMiddleAxis = new DateAxis();
      NumberAxis rangeMiddleAxis = new NumberAxis("Value");
      StandardXYItemRenderer rendererMiddle = new StandardXYItemRenderer();
      rendererMiddle.setBaseShapesVisible(false);
      //rendererMiddle.setBaseToolTipGenerator(new StandardXYToolTipGenerator(StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT, new SimpleDateFormat("d-MMM-yyyy"), new DecimalFormat("0.00")));
      XYPlot plot3 = new XYPlot(collectionSL, domainMiddleAxis, rangeMiddleAxis, rendererFinal);
      plot3.setBackgroundPaint(Color.lightGray);
      plot3.setDomainGridlinePaint(Color.white);
      plot3.setRangeGridlinePaint(Color.white);
      plot3.setRangePannable(true);
      plot3.setDomainPannable(true);
  
  
  
      //plot3.setDataset(collectionSL);
      //plot3.setRenderer(new StandardXYItemRenderer());
      //StandardXYItemRenderer rendererML = new StandardXYItemRenderer();
      plot3.setDataset(1, collectionML);
      plot3.setRenderer(1, rendererMiddle);
      //XYLineAndShapeRenderer r = new XYLineAndShapeRenderer();
      //r.setBaseShapesVisible(false);
      //plot3.setRenderer(1, r);
  
  
  
      CombinedDomainXYPlot cplot = new CombinedDomainXYPlot(domainAxis);
      cplot.add(plot1, 3);
      cplot.add(plot3, 2);
      cplot.add(plot2, 2);
      cplot.setGap(8.0);
      cplot.setDomainGridlinePaint(Color.white);
      cplot.setDomainGridlinesVisible(true);
      cplot.setDomainPannable(true);
  
  
      //return the new combined chart
      JFreeChart chart = new JFreeChart("Sun Microsystems (SUNW)", JFreeChart.DEFAULT_TITLE_FONT, cplot, true);
  
  
      ChartUtilities.applyCurrentTheme(chart);
      renderer2.setShadowVisible(false);
      renderer2.setBarPainter(new StandardXYBarPainter());
  
      return chart;
  }
  
  
  //create a panel
  public static JPanel createDemoPanel()
  {
      JFreeChart chart = createCombinedChart();
      ChartPanel panel = new ChartPanel(chart);
      panel.setMouseWheelEnabled(true);
  
      return panel;
  }
  
  //return chart
  public JPanel getChart()
  {
      return myPanel;
  }
  
  }
  </code></pre>