您好我想编写下一个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);
}
}
}
答案 0 :(得分:0)
您可以在同一个JFrame中添加不同的面板,并使用jPanel.setVisible(true);
控制可见性,或者如果您想要隐藏它,那么在上面的代码{/ 1}}中,您将直接向Jframe使用面板添加按钮。
答案 1 :(得分:0)
如果您按下,JPanel将被删除,并且将添加一个新的。但两者都在同一个JFrame上。
阅读How to Use CardLayout上的Swing教程中的部分。 CardLayout
专为此功能而设计。