有关java 的swing的问题

就是一个窗口(JFrame),里面有个按钮(Button),然后Frame有两个候选的JPanel,怎么样才能做到按按钮切换JFrame里的JPanel呢?是setContentPane()后刷新么?如果是,要怎么刷新JFrame呢?

一个隐藏一个显示不就可以咯

[code="java"]import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class JPanelSwitch {
public static void main(String[] args) {
final JPanel panel1 = new JPanel();
panel1.add(new JLabel("

JPanel1"));
    final JPanel panel2 = new JPanel();
    panel2.add(new JLabel("<html><body><font color=green>JPanel2</font></body></html>"));

    final JFrame mainFrame = new JFrame("main");
    final JPanel defaultPanel = new JPanel();
    defaultPanel.add(new JLabel("<html><body><font color=yellow>Defualt Show</font></body></html>"));
    mainFrame.add(defaultPanel, BorderLayout.CENTER);

    JButton panel1Button = new JButton("切换到JPanel1");
    panel1Button.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            mainFrame.add(panel1, BorderLayout.CENTER);
            mainFrame.remove(defaultPanel);
            mainFrame.remove(panel2);
            mainFrame.pack();
            mainFrame.repaint();
        }
    });

    JButton panel2Button = new JButton("切换到JPanel2");
    panel2Button.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            mainFrame.remove(defaultPanel);
            mainFrame.remove(panel1);
            mainFrame.add(panel2, BorderLayout.CENTER);
            mainFrame.pack();
            mainFrame.repaint();

// JOptionPane.showMessageDialog(mainFrame, "2");
}
});

    JPanel buttonPanel = new JPanel();
    buttonPanel.add(panel1Button);
    buttonPanel.add(panel2Button);

    mainFrame.add(buttonPanel, BorderLayout.SOUTH);

    mainFrame.pack();
    mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    mainFrame.setVisible(true);

}

}
[/code]

这样的么?

为什么不用JTabbedPane呢?

使用卡片布局