就是一个窗口(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("
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呢?
使用卡片布局