title: Java - Update/ Change Content of JFrame - (Delete old content) and Insert new Content (Panel itd.)
body: <p>Target:
  When user give valid login and password -> (JFrame - Destroy login content)
  And Change own content to game content.. (function GRA)</p>
  
  <p>Problem:</p>
  
  <p>When i try use :</p>
  
  <p>main.contentpane.removeAll():
  main.removeAll():<br>
  doLayout</p>
  
  <p>And others (Command)</p>
  
  <p>Program doesn't load a new content.</p>
  
  <p>Here is my code :</p>
  
  <pre><code>class GUI implements ActionListener {
  
      public static JPanel image_cont;
  
      // definicja klasy wątka
      runner pierwiast = new runner();
  
      public static JFrame main = new JFrame();
  
      public static JLabel ilosc_pkt = new JLabel("0");
  
      JTextField pole, login_p, haslo_p;
  
      dostep_z_o logowanie = new dostep_z_o("baza_danych.txt");
  
      public GUI() {
  
  
  
  
  
  
  
          // wymiary okna x, y (zasada oznakowania, wykresy matematyczne)
          main.setSize(900, 400);
  
          // porządkowanie pozycji elementów
          //setLayout(new FlowLayout());
  
          // tytuł okna
          main.setTitle("Gra ułamki - logowanie do gry");
  
  
  
  
  
  
          main.setResizable(false);
          main.setVisible(true);
  
  
          main.setLayout(null);
  
  
          JLabel login = new JLabel("Login : ");
          JLabel haslo = new JLabel("Hasło : ");
          login_p = new JTextField("",10);
          haslo_p = new JTextField("",10);
          JButton przycisk = new JButton("Zaloguj!");
  
          // nadanie akcji
          przycisk.setActionCommand("Login");
  
          // dodanie do Action listenera
          przycisk.addActionListener(this);
  
          // marginery - zakres, pozycji dla obiektu
          Insets insets = main.getInsets();
  
          main.add(login);
          main.add(login_p);
          main.add(haslo);
          main.add(haslo_p);
          main.add(przycisk);
  
          // preferowany rozmiar przez jave dla elementu
          Dimension size = przycisk.getPreferredSize();
          System.out.println(size);
  
          login.setBounds(296 + insets.left, 4 + insets.top, 41, 16);
          login_p.setBounds(342 + insets.left, 2 + insets.top, 114, 20);
          haslo.setBounds(296 + insets.left, 32 + insets.top, 41, 16);
          haslo_p.setBounds(342 + insets.left, 30 + insets.top, 114, 20);
          przycisk.setBounds(467 + insets.left, 2 + insets.top, 117, 48);
          // (900 / 2) - ((41 + 5 + 114 + 11 + 117) / 2 )
          // 450 -               144 = 296
  
  
  
          main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
      }
  
      public void gra()
      {
  
          main.removeAll();
          main.getContentPane().removeAll();
  
          main.setTitle("Gra ułamki - złap pierwiastki chemiczne. Quickly! -- Aktualna ilość punktów : " + runner.punkty);
  
          JPanel content = new JPanel();
          content.setBackground(Color.green);
          //content.setLayout(new BorderLayout(200, 200));
          content.setPreferredSize(new Dimension(900, 75));
          content.setLayout(null);
          //content.setSize(0, 0);
  
          // pole tekstowe
          pole = new JTextField("",2);
          // definiowanie przycisku
          JButton przycisk = new JButton("Zatwierdź wprowadzenie!");
          // nadanie komendy wysyłanej do action listenera
          przycisk.setActionCommand("Spr");
          // dodanie do Action listenera
          przycisk.addActionListener(this);
  
          //opis punktów
          JLabel opis_p = new JLabel("Ilość punktów : ");
  
          JLabel n_pierw = new JLabel("Nazwa pierwiastka : ");
          //ilosc_pkt
  
          // marginery - zakres, pozycji dla obiektu
          Insets insets = content.getInsets();
  
          content.add(n_pierw);
          content.add(pole);
          content.add(przycisk);
          content.add(opis_p);
          content.add(ilosc_pkt);
  
  
  
  
          // setBounds - ustawia pozycje, Od lewej krawedzi, od gornej krawedzi, dlugosc_obiektu, _ jego wysokosc
          // przy ustalaniu pozyucji trzeba wziasc pod uwage margines     
          n_pierw.setBounds(284 + insets.left, 12 + insets.top, 117, 16);
          pole.setBounds(284 + 115 + insets.left, 10 + insets.top, 30, 20);
          przycisk.setBounds(284 + 153 + insets.left, 7 + insets.top, 179, 26);
  
          // Do prawego boku
          opis_p.setBounds(750 + insets.left, 12 + insets.top, 88, 16);
          ilosc_pkt.setBounds(840 + insets.left, 9 + insets.top, 88, 22);
  
          // ustawienia Fonta
          Font font = new Font ("Calibri", Font.BOLD, 20);
          ilosc_pkt.setFont(font);
  
  
  
  
  
          main.getContentPane().setLayout(new FlowLayout());
          main.getContentPane().add(pierwiast);
          main.getContentPane().add(content);
  
  
  
  
  
          pierwiast.kontrola_gui(this);
          pierwiast.init();     
  
  
  
  
          main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
      }
  
      @Override
      public void actionPerformed(ActionEvent e) {
          if(e.getActionCommand().equals("Spr"))
          {
              // pobranie tekstu z TextFielda
              String w_pierw = pole.getText();
  
              // Sprawdza czy String nie jest pusty
              if(!("").equals(w_pierw) &amp;&amp; pierwiast.x1 != -1)
              {
  
                  // sprawdza wprowadzony pierwiastek czy jest taki sam jak wpisalismy
                  if (!w_pierw.equals(pierwiast.tab_pierw[pierwiast.x1].p_ch_n))
                  {
  
                      // Zmniejszenie ilości punktów
                      pierwiast.punkty -=1;
                      ilosc_pkt.setText(Integer.toString(pierwiast.punkty));
  
                      JOptionPane.showMessageDialog(null, "Źle! Módl się byś nie zostął/a potraktowany/a chlorem!");
                      main.setTitle("Gra ułamki - złap pierwiastki chemiczne. Quickly! - " + pierwiast.tab_pierw[runner.x1].p_ch_n + " - Źle (-1 punkt) -- Aktualna ilość punktów : " + pierwiast.punkty);
                  }
                  else
                  {
                      JOptionPane.showMessageDialog(null, "Poprawnie! Pani z chemii się cieszy!");
  
                      // Zwiększenie ilości punktów
                      pierwiast.punkty +=1;
                      ilosc_pkt.setText(Integer.toString(pierwiast.punkty));
  
                      main.setTitle("Gra ułamki - złap pierwiastki chemiczne. Quickly! - " + pierwiast.tab_pierw[runner.x1].p_ch_n + " - Dobrze (+1 punkt) -- Aktualna ilość punktów : " + pierwiast.punkty);
                      // ustawienie statusu do znikniecia
                      pierwiast.tab_pierw[pierwiast.x1].status_p = 2;
  
                      // usuwanie poprzedniego wyboru pierwiastka (unikniecie ponownego odkrycia)
                      pierwiast.x1 = -1;
  
                      //czyszczenie pola - do wpisywania
                      pole.setText("");
  
                  }
              }
              else
              {
                   JOptionPane.showMessageDialog(null, "Nie wpisano nazwy pierwiastka lub nie kliknięto");
              }
  
          }
          else if (e.getActionCommand().equals("Login"))
          {
              String login = login_p.getText();
              String haslo = haslo_p.getText();
  
              if(!"".equals(login) &amp;&amp; !"".equals(haslo))
              {
                  logowanie.logowanie(login, haslo);
  
                  if (logowanie.login)
                  {
                      this.gra();
                  }
              }
              else
              {
                  JOptionPane.showMessageDialog(null, "Nie wpisano loginu i hasła");
              }
          }
      }
  
  
  }
  </code></pre>
  
  <p>Where I make fault?
  What is wrong?</p>
  
  <p>--- [edit] ---</p>
  
  <p>Resolve (For other seekers):</p>
  
  <p>@Dave tip</p>
  
  <p>//add revalidate for each component (Gra function)</p>
  
  <pre><code>        main.getContentPane().add(pierwiast);
          main.getContentPane().add(content);
  
          pierwiast.revalidate();
          content.revalidate();
  </code></pre>
  
  <p>And (At the start gra function)</p>
  
  <pre><code>        //main.getContentPane().removeAll(); &lt;- Delete this
          //main.getContentPane().validate(); &lt;- Delete this
  
          main.setTitle("Gra ułamki - złap pierwiastki chemiczne. Quickly! -- Aktualna ilość punktów : " + runner.punkty);
  </code></pre>
  
  <p>And
  Before load (function gra) (public void actionPerformed)
  in</p>
  
  <pre><code>                if (logowanie.login)
                  {
                      main.getContentPane().removeAll(); //add this
                      main.repaint(); //add this
                      main.validate(); //add this
                      this.gra();
                  }
  </code></pre>