如何在框架中加载下一个面板,该框架已使用setContentPanel()设置了面板

时间:2012-04-09 10:39:17

标签: swing jframe jpanel next

我有一个JFrame类和两个JPanel类。首先,我想在调用Jframe main()时以及“Next>”时添加Panel1单击Panel1中的按钮,想要打开Panel2。

现在我正在尝试的是运行JFrame,它通过调用jFrameObj.setContentPane(Panel1)打开Panel1。后来我的cotrol移动到Panel1,现在我怎么能在同一个jFrameObj上做setContentPane(Panel2)?

这是我的功能的正确方法吗?如果有其他方法,推荐我吗?

1 个答案:

答案 0 :(得分:2)

这是一个简单的程序,用于说明CardLayout对所需任务的使用情况。您可能还想查看此article(从2005年开始,因此有些内容可能已更改)。

import java.awt.*;
import javax.swing.*;

public class CardLayoutTestApplet extends JApplet {

    @Override
    public void init() {
        final Container pane = getContentPane();
        final CardLayout paneLayout = new CardLayout();

        JPanel panel1 = new JPanel();
        JButton button1 = new JButton("Next>>");
        panel1.add(button1);

        button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                paneLayout.show(pane, "Card2");
            }
        });

        JPanel panel2 = new JPanel();
        panel2.add(new JLabel("Second Panel"));

        pane.setLayout(paneLayout);
        pane.add(panel1, "Card1");
        pane.add(panel2, "Card2");
    }
}