Java 如何删除JPanel并在同一JFrame中绘制新的JPanel?

Java 如何删除JPanel并在同一JFrame中绘制新的JPanel?,java,jpanel,Java,Jpanel,嗨,我想设定下一个按钮。如果按“下一步”,JPanel将被删除,并将添加一个新的JPanel。但两者都在同一个框架上。我发布了我代码的一部分。如果有人能帮助我,我会很高兴的 class Programm extends JFrame implements ActionListener { Buttons b = new Buttons(); Frame f = new Frame(); JButton button_next; URL f

嗨,我想设定下一个按钮。如果按“下一步”,JPanel将被删除,并将添加一个新的JPanel。但两者都在同一个框架上。我发布了我代码的一部分。如果有人能帮助我,我会很高兴的

    class Programm extends JFrame implements ActionListener  {


     Buttons b = new Buttons();
     Frame f = new Frame();
     JButton button_next;

      URL file = this.getClass().getResource("firstPage.png");

      ImageIcon firstImage = new ImageIcon(getClass().getResource("firstPage.png"));
      ImageIcon secoundImage = new ImageIcon(getClass().getResource("secoundPage.png"));
      Image img = firstImage.getImage();  
      Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();

      JLabel label;
      JPanel panel = new JPanel();



     public Programm(){


          f.frame();

          Image newimg = img.getScaledInstance((int)dim.getWidth(),(int)dim.getHeight(), java.awt.Image.SCALE_SMOOTH);
          firstImage = new ImageIcon(newimg);  
          label= new JLabel(firstImage);

          panel.setSize((int)dim.getWidth(),(int)getHeight());
          panel.setLayout(new BorderLayout()); 
          //label.setPreferredSize(new Dimension((int) dim.getWidth(),(int) dim.getHeight()));

          panel.add(label, BorderLayout.CENTER);
           //frame.setContentPane(new JLabel(firstImage));


           addButtons();



            f.frame.add(panel, BorderLayout.CENTER);


      }



      public void addButtons(){

              b.button_next1.addActionListener(this);
              f.frame.add(b.button_next1);

              b.button_mainMenu.addActionListener(this);
              f.frame.add(b.button_mainMenu);


          }


      public void actionPerformed(ActionEvent e){
          if(e.getSource() == b.button_next1){

                    f.frame.remove(panel);
                    SecoundPage s = new SecoundPage();


             }

          if(e.getSource() == b. button_mainMenu){
                 f.frame.setVisible(false);

             }
      }


      }




   the next page: 

  public class SecoundPage extends JFrame implements ActionListener  {
    Buttons b = new Buttons();
    Frame f = new Frame();

    ImageIcon secoundImage = new ImageIcon(getClass().getResource("secoundPage.png"));
    Image img = secoundImage.getImage();  
    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();


    JLabel label;
    JPanel panel = new JPanel();
    public  SecoundPage(){




            Image newimg = img.getScaledInstance((int)dim.getWidth(),(int)dim.getHeight(), java.awt.Image.SCALE_SMOOTH);
            secoundImage = new ImageIcon(newimg);
            addButtons();

            label= new JLabel(secoundImage);
            panel.setSize((int)dim.getWidth(),(int)getHeight());
            panel.setLayout(new BorderLayout());
            panel.add(label, BorderLayout.CENTER);
            f.frame.add(label, BorderLayout.CENTER);

    }


    public void addButtons(){


         b.button_back2.addActionListener(this);
         f.frame.add(b.button_back2);

         b.button_next2.addActionListener(this);
         f.frame.add(b.button_next2);

         b.button_mainMenu.addActionListener(this);
         f.frame.add(b.button_mainMenu);


    }

     public void actionPerformed(ActionEvent e){

         if(e.getSource() == b.button_back2);   
            Programm p = new Programm();


         if(e.getSource() == b.button_next2){

             ThirdPage t = new ThirdPage();


             }



         if(e.getSource() == b. button_mainMenu){

             f.frame.setVisible(false);

         }

     }
     }

您可以在同一JFrame中添加不同的面板,并使用
jPanel.setVisible(true)控制可见性
或者如果要隐藏它,则
jPanel.setVisible(false)在上面的代码中,您将直接向Jframe添加按钮,而不是使用面板

如果按“下一步”,JPanel将被删除,并将添加一个新的JPanel。但两者都在同一个框架上


阅读上的Swing教程中的部分。
CardLayout
就是为实现这一功能而设计的。

不要自己管理多个面板的隐藏/显示。相反,你应该使用。
CardLayout
就是为实现这一功能而设计的。