java中CardLayout的使用方法
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Card extends JFrame{
/*
* JFrame的布局管理器是BorderLayout
*/
JPanel p;//位于中心区域的面板
JButton b1,b2,b3,b4;//位于南部区域的四个按钮
JLabel l1,l2,l3,l4;
CardLayout c;//设置面板p的布局
Card(String name)
{
super(name);
this.setVisible(true);
this.setBounds(400,300,400,400);
p = new JPanel();//实例化p
c = new CardLayout();//实例化c
p.setLayout(c);//设置面板p的布局为c,等价于p = new JPanel(c);
//实例化4个按钮和标签
b1 = new JButton("previous");
b2 = new JButton("two");
b3 = new JButton("three");
b4 = new JButton("next");
l1 = new JLabel("first card");
l2 = new JLabel("second card");
l3 = new JLabel("thirth card");
l4 = new JLabel("fourth card");
//实例化4个子面板并设定相应背景颜色
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p3 = new JPanel();
JPanel p4 = new JPanel();
p1.setBackground(Color.green);
p2.setBackground(Color.pink);
p3.setBackground(Color.orange);
p4.setBackground(Color.lightGray);
//把上面4个面板添加到中心面板p中,并把4个面板分别用编号为1,2,3,4代替
p.add(p1,"1");
p.add(p2,"2");
p.add(p3,"3");
p.add(p4,"4");
//把4个标签分别添加到4个子面板中
p1.add(l1);
p2.add(l2);
p3.add(l3);
p4.add(l4);
//实例化位于南部区域的面板,并添加4个按钮
JPanel psourth = new JPanel();
psourth.add(b1);
psourth.add(b2);
psourth.add(b3);
psourth.add(b4);
//把p,psourth分别添加到本JFrame的中心区域和南部区域
this.add(p);//等价于this.add(p,BorderLayout.CENTER); 因为默认是把组件添加到中部
this.add(psourth,BorderLayout.SOUTH);
//为按钮b1添加监听器,当被按下时显示面板p中的前一个子面板
b1.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
c.previous(p);//显示p中的上一个面板
}
});
//为按钮b2添加监听器,当被按下时显示面板p中的第2个子面板
b2.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
c.show(p, "2");//显示p中代号为2的面板
}
});
//以下类推
b3.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
c.show(p, "3");
}
});
b4.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
c.next(p);
}
});
//使用匿名内部类为本Frame添加监听器,当点击关闭按钮时结束程序
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Card("My Card");
}
}
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具