Java中CardLayout布局方式的应用

本文介绍了一个使用Java Swing的CardLayout实现界面动态切换的示例。通过创建包含多个按钮的内容面板,并利用CardLayout的next方法,实现了面板间平滑过渡的效果。示例中还展示了如何通过线程控制CardLayout的自动切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 import java.awt.CardLayout;
 2 import java.awt.Color;
 3 import java.awt.Container;
 4 
 5 import javax.swing.JButton;
 6 import javax.swing.JFrame;
 7 
 8 public class CardLayoutDemo {
 9     public static void main(String[] args) {
10         //新建一个JFrame框架
11         JFrame frame = new JFrame("CardLayout");
12         frame.setSize(600, 400);
13         frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
14         
15         final Container cp = frame.getContentPane();//得到一个内容面板;final标记的为常量,只能赋值一次
16         final CardLayout cardlayout = new CardLayout();//因为后期会对layout进行操作,才将其单独定义出来
17         cp.setLayout(cardlayout);//cp.setLayout(new CardLayout())的方式不可行,会出现异常
18         Color[] colors = { Color.white, Color.GRAY, Color.PINK, Color.cyan };
19 
20         for (int i = 0; i < colors.length; i++) {
21             String name = "card" + String.valueOf(i + 1);
22             JButton button = new JButton(name);
23             button.setBackground(colors[i]);
24             cp.add(name, button);
25         }
26 
27         frame.setVisible(true);
28         /**
29          * 要点是创建线程时,要重写Thread类中的run方法
30          */
31         Thread thread = new Thread() {
32             public void run() {
33                 while (true) {
34                     try {
35                         Thread.sleep(400);
36                     } catch (InterruptedException e) {
37                         e.printStackTrace();
38                     }
39                     /**
40                      * cardLayout的next是另外一个内容面板
41                      */
42                     cardlayout.next(cp);
43                 }
44             }
45         };
46         thread.start();//启动线程
47     }
48 }

 

转载于:https://www.cnblogs.com/LJHAHA/p/10211082.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值