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

时间:2015-01-10 12:15:51

标签: java jpanel

您好我想编写下一个Button。如果你按下,JPanel将被删除,并将添加一个新的。但两者都在同一个JFrame上。我发布了部分代码。如果有人帮助我,我会很高兴。

    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);

         }

     }
     }

2 个答案:

答案 0 :(得分:0)

您可以在同一个JFrame中添加不同的面板,并使用jPanel.setVisible(true);控制可见性,或者如果您想要隐藏它,那么在上面的代码{/ 1}}中,您将直接向Jframe使用面板添加按钮。

答案 1 :(得分:0)

  

如果您按下,JPanel将被删除,并且将添加一个新的。但两者都在同一个JFrame上。

阅读How to Use CardLayout上的Swing教程中的部分。 CardLayout专为此功能而设计。