繁体   English   中英

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

[英]how to delete a JPanel and paint a new one in the same JFrame?

嗨,我想编程下一个按钮。 如果您按下一步,则将删除JPanel,并添加一个新的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);

         }

     }
     }

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

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

阅读Swing教程中有关如何使用CardLayout的部分 CardLayout是为此精确功能而设计的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM