[英]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.