簡體   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