卡片布局可以通过点击窗口中的按钮切换不同的面板。
package menu;
import java.awt.CardLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class User extends JFrame implements ActionListener{
private JButton button1 = new JButton("图书查询");
private JButton button2 = new JButton("借阅记录");
private JButton button3 = new JButton("修改信息");
private JPanel panel1 = new JPanel();
private JPanel panel2 = new JPanel();
private JPanel panel3 = new JPanel();
private JPanel panel4 = new JPanel();
private JPanel panel5 = new JPanel();
//定义卡片布局
CardLayout card;
public User(){
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
card = new CardLayout();
/*面板1设置为卡片布局*/
panel1 = new JPanel(card);
/*修改图标*/
Toolkit t =Toolkit.getDefaultToolkit();
Image img = t.getImage("src\\menu\\sign.jpg");
this.setIconImage(img);
panel3.add(new JLabel("卡片1"));
panel4.add(new JLabel("卡片2"));
panel5.add(new JLabel("卡片3"));
/*把三个面板加入到面板1中*/
panel1.add(panel3, "0");
panel1.add(panel4, "1");
panel1.add(panel5, "2");
panel2.add(button1);
panel2.add(button2);
panel2.add(button3);
/*设置面板1和面板2的位置*/
this.add(panel1, "South");
this.add(panel2, "Center");
/*设置面板为透明*/
panel1.setOpaque(false);
panel2.setOpaque(false);
panel3.setOpaque(false);
panel4.setOpaque(false);
panel5.setOpaque(false);
this.setSize(600, 600);
this.setTitle("用户管理界面");
this.setLocationRelativeTo(null);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == button1) {
card.show(panel1, "0");
}else if(e.getSource() == button2) {
card.show(panel1, "1");
}else if(e.getSource() == button3){
card.show(panel1, "2");
}
}
}
效果: