Java中CardLayout的使用

【例1】代码:

 1 import java.awt.CardLayout;
 2 import java.awt.GridLayout;
 3 import java.awt.event.ActionEvent;
 4 import java.awt.event.ActionListener;
 5 import java.awt.event.WindowAdapter;
 6 import java.awt.event.WindowEvent;
 7
 8 import javax.swing.JButton;
 9 import javax.swing.JFrame;
10 import javax.swing.JLabel;
11 import javax.swing.JPanel;
12
13 public class TestCardLayout extends JFrame implements ActionListener {
14      CardLayout cl;
15      JPanel nav = new JPanel();
16      JPanel main = new JPanel();
17      JPanel jp1 = new JPanel();
18      JPanel jp2 = new JPanel();
19      JPanel jp3 = new JPanel();
20      JPanel jp4 = new JPanel();
21      JPanel jpFirst = new JPanel();
22      JPanel jpNext = new JPanel();
23      JPanel jpPrevious = new JPanel();
24      JPanel jpLast = new JPanel();
25      JLabel jl1 = new JLabel("第一张");
26      JLabel jl2 = new JLabel("第二张");
27      JLabel jl3 = new JLabel("第三张");
28      JLabel jl4 = new JLabel("第四张");
29      JButton first = new JButton("第一张");
30      JButton next = new JButton("下一张");
31      JButton previous = new JButton("上一张");
32      JButton last = new JButton("最后一张");
33
34      public static void main(String[] args) {
35          new TestCardLayout();
36      }
37
38      TestCardLayout() {
39         this.setTitle("TestCardLayout");
40         this.setSize(400, 300);
41         this.setLayout(new GridLayout(1, 2));
42         main.setLayout(new CardLayout());
43         this.setResizable(false);
44
45         nav.setLayout(new GridLayout(4,1));
46         jp1.add(first);
47         jp2.add(next);
48         jp3.add(previous);
49         jp4.add(last);
50         nav.add(jp1);
51         nav.add(jp2);
52         nav.add(jp3);
53         nav.add(jp4);
54         jpFirst.add(jl1);
55         jpNext.add(jl2);
56         jpPrevious.add(jl3);
57         jpLast.add(jl4);
58         main.add(jpFirst);
59         main.add(jpNext);
60         main.add(jpPrevious);
61         main.add(jpLast);
62
63         this.add(nav);
64         this.add(main);
65         first.addActionListener(this);
66         next.addActionListener(this);
67         previous.addActionListener(this);
68         last.addActionListener(this);
69         this.addWindowListener(new WindowAdapter() {
70             public void windowClosing(WindowEvent arg0) {
71                 System.exit(0);
72             }
73         });
74         setVisible(true);
75      }
76
77     public void actionPerformed(ActionEvent e) {
78         cl = (CardLayout)main.getLayout();
79         cl.setHgap(0); cl.setVgap(0);
80
81         if(e.getSource() == first){
82             cl.first(main);
83         }else if(e.getSource() == next){
84             cl.next(main);
85         }else if(e.getSource() == previous){
86             cl.previous(main);
87         }else if(e.getSource() == last){
88             cl.last(main);
89         }
90
91
92     }
93
94 }

效果图:

【例2】代码:

  1 import java.awt.BorderLayout;
  2 import java.awt.CardLayout;
  3 import java.awt.Color;
  4 import java.awt.Dimension;
  5 import java.awt.Font;
  6 import java.awt.Graphics;
  7 import java.awt.GridLayout;
  8 import java.awt.Image;
  9 import java.awt.Label;
 10 import java.awt.event.ActionEvent;
 11 import java.awt.event.ActionListener;
 12 import java.awt.event.WindowAdapter;
 13 import java.awt.event.WindowEvent;
 14
 15 import javax.swing.BorderFactory;
 16 import javax.swing.ImageIcon;
 17 import javax.swing.JFrame;
 18 import javax.swing.JLabel;
 19 import javax.swing.JMenu;
 20 import javax.swing.JMenuBar;
 21 import javax.swing.JMenuItem;
 22 import javax.swing.JPanel;
 23
 24 public class UserMain extends JFrame implements ActionListener {
 25     private String name;
 26     public void setName(String name) {
 27         this.name = name;
 28     }
 29
 30     public String getName() {
 31         return name;
 32     }
 33
 34     private CardLayout cl;
 35
 36     public CardLayout getCl() {
 37         return cl;
 38     }
 39
 40     //所用面板
 41     private JPanel main = new JPanel();
 42     public JPanel getMain() {
 43         return main;
 44     }
 45     JPanel barPanel = new JPanel();
 46     JPanel userPanel = new JPanel();
 47     JPanel jpDefault = new JPanel();
 48     JPanel eastPanel = new JPanel();
 49     JPanel southPanel = new JPanel();
 50     JPanel jp1,jp2,jp3,jp4,jp5,jp6,jp7;
 51
 52     //所用菜单组件
 53     JMenuBar mBar = new JMenuBar();
 54     JMenu myOrder = new JMenu("我的订单");
 55     JMenuItem oQuery = new JMenuItem("订单查询");
 56     JMenuItem oAdd = new JMenuItem("添加订单");
 57     JMenuItem oDel = new JMenuItem("取消订单");
 58     JMenu uInfo = new JMenu("我的信息");
 59     JMenuItem uQuery = new JMenuItem("查询");
 60     JMenuItem uModify = new JMenuItem("修改");
 61     JMenu hInfo = new JMenu("酒店信息");
 62     JMenuItem hQuery = new JMenuItem("查询");
 63     JMenu option = new JMenu("选择");
 64     JMenuItem help = new JMenuItem("帮助");
 65     JMenuItem back = new JMenuItem("注销");
 66
 67     public static void main(String[] args) {
 68         new UserMain("KK");
 69     }
 70
 71     UserMain(String name) {
 72         this.name = name;
 73
 74         this.setTitle(name +"用户,欢迎您!");
 75         this.setLayout(new BorderLayout());
 76         this.setResizable(false);
 77
 78         //放置背景图片
 79         ImageIcon background = new ImageIcon(LoginFrame.class.getClassLoader().getResource("images/Umain.jpg"));
 80         JLabel bkLabel = new JLabel(background);
 81         bkLabel.setBounds(0, 0,background.getIconWidth(), background.getIconHeight());
 82         this.setSize(background.getIconWidth(), background.getIconHeight());
 83         this.getLayeredPane().add(bkLabel,new Integer(Integer.MIN_VALUE));
 84         JPanel ctPanel = (JPanel)this.getContentPane();
 85         ctPanel.setOpaque(false);
 86
 87         //设置面板透明度,布局,和菜单组合
 88         main.setOpaque(false);
 89         jpDefault.setOpaque(false);
 90         barPanel.setOpaque(false);
 91         userPanel.setOpaque(false);
 92         eastPanel.setOpaque(false);
 93         southPanel.setOpaque(false);
 94         main.setLayout(new CardLayout());
 95         barPanel.setLayout(new BorderLayout());
 96         //main.setBackground(new Color(255, 250 ,250));
 97         uInfo.add(uQuery);
 98         uInfo.add(uModify);
 99         hInfo.add(hQuery);
100         myOrder.add(oQuery);
101         myOrder.add(oAdd);
102         myOrder.add(oDel);
103         option.add(help);
104         option.add(back);
105         mBar.add(uInfo);
106         mBar.add(hInfo);
107         mBar.add(myOrder);
108         mBar.add(option);
109         mBar.setOpaque(false);
110         barPanel.add(mBar,BorderLayout.EAST);
111
112         //设置标签样式,面板大小等
113         uInfo.setForeground(Color.WHITE);
114         hInfo.setForeground(Color.WHITE);
115         myOrder.setForeground(Color.WHITE);
116         option.setForeground(Color.WHITE);
117         myOrder.setFont(new  java.awt.Font("微软楷体", Font.BOLD,  18));
118         uInfo.setFont(new  java.awt.Font("微软楷体", Font.BOLD,  18));
119         hInfo.setFont(new  java.awt.Font("微软楷体", Font.BOLD,  18));
120         option.setFont(new  java.awt.Font("微软楷体", Font.BOLD,  18));
121         myOrder.setPreferredSize(new Dimension(120,20));
122         uInfo.setPreferredSize(new Dimension(150,20));
123         hInfo.setPreferredSize(new Dimension(150,20));
124         option.setPreferredSize(new Dimension(80,20));
125         barPanel.setPreferredSize(new Dimension(940,158));
126         userPanel.setPreferredSize(new Dimension(380,400));
127         eastPanel.setPreferredSize(new Dimension(60,400));
128         southPanel.setPreferredSize(new Dimension(940,50));
129         mBar.setBorder(BorderFactory.createEmptyBorder());
130
131
132         main.add(jpDefault);
133         this.add(barPanel,BorderLayout.NORTH);
134         this.add(userPanel,BorderLayout.WEST);
135         this.add(main,BorderLayout.CENTER);
136         this.add(eastPanel,BorderLayout.EAST);
137         this.add(southPanel,BorderLayout.SOUTH);
138         this.pack();
139
140         oQuery.addActionListener(this);
141         oAdd.addActionListener(this);
142         oDel.addActionListener(this);
143         uQuery.addActionListener(this);
144         uModify.addActionListener(this);
145         hQuery.addActionListener(this);
146         help.addActionListener(this);
147         back.addActionListener(this);
148         this.addWindowListener(new WindowAdapter() {
149             public void windowClosing(WindowEvent arg0) {
150                 System.exit(0);
151             }
152         });
153         setVisible(true);
154     }
155
156     public void actionPerformed(ActionEvent e) {
157         cl = (CardLayout)main.getLayout();
158         cl.setHgap(0); cl.setVgap(0);
159
160         if(e.getSource() == uQuery){
161             jp1 = (JPanel)new UserCard("用户查询",this);
162             main.add("用户查询",jp1);
163             cl.show(main,"用户查询");
164             }else if(e.getSource() == uModify){
165                 jp2 = (JPanel)new UserCard("用户修改",this);
166                 main.add("用户修改",jp2);
167                 cl.show(main,"用户修改");
168             }else if(e.getSource() == hQuery) {
169                 jp3 = (JPanel)new UserCard("酒店查询",this);
170                 main.add("酒店查询",jp3);
171                 cl.show(main,"酒店查询");
172             }else if(e.getSource() == oQuery) {
173                 jp4 = (JPanel)new UserCard("订单查询",this);
174                 main.add("订单查询",jp4);
175                 cl.show(main, "订单查询");
176             }else if(e.getSource() == oAdd) {
177                 jp5 = (JPanel)new UserCard("订单添加",this);
178                 main.add("订单添加",jp5);
179                 cl.show(main, "订单添加");
180             }else if(e.getSource() == oDel) {
181                 jp6 = (JPanel)new UserCard("订单删除",this);
182                 main.add("订单删除",jp6);
183                 cl.show(main, "订单删除");
184             }else if (e.getSource() == help) {
185             System.out.println("hhhh");
186                 jp7 = (JPanel)new UserCard("帮助",this);
187                 main.add("帮助",jp7);
188                 cl.show(main,"帮助");
189             }else if (e.getSource() == back) {
190                 this.setVisible(false);
191                 new LoginFrame();
192             }
193
194     }
195
196 }

通过show()方法显示指定“卡片”,不同”卡片”指向继承JPanel的不同类。

效果图:

因为是Java初学者,窗体的很多布局不是很了解,为了让窗体看上去好看,只有硬塞一张处理过的图片了,嘿嘿--

时间: 2024-11-29 07:40:55

Java中CardLayout的使用的相关文章

Java中CardLayout布局方式的应用

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

黑马程序员------Java中GUI(图形用户界面)学习总结

Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! GUI: Graphical User Interface(图形用户接口). 即用图形的方式,来显示计算机操作的界面,以方便用户更容易更直观地操作. Java中为GUI提供的对象都在Java.Awt和Javax.Swing两个包中. java.Awt: Abstract Window ToolKit (抽象窗口工具包). 需要调用本地系统方法实现功能,属于重量级控件. javax.Swing: 在AWT的基础上

java中的三元运算符详解

最近在带领实习生中遇到很多新手问与三元运算符有关的java题目,多数为代码结果题,少数为应用题.鉴于很多资料上对于java三元运算的讲解过于简单,网上的资料与题目也不是很完善,对于结果答案分析不一,故在此总结,当然仅为个人观点,水平有限,不足之处,还请大家多多指出,互相交流学习. 什么是java三元运算符呢?无疑其操作元有三个,第一个是条件表达式,剩余两个为值,条件表达式为真时运算取第一个值,为假时取第二个值. 其示例代码如下:boolean a = 20 < 45 ? true : false

java中BigDecimal的学习

干着java的活,但是看的都是一些偏底层的东西(或者我根本就没有看),有点荒废了java的学习. 最近一直在用到一个类是BigDecimal,但都是模棱两可地在那儿用,并没有深入研究这个类的细节,感觉不能再拖了. BigDecimal,从名字来看就是进行大数运算的,不光这样,还广泛用于小数的精确运算. 当你接触到和钱有关的计算的时候,这个类还是很有用滴. 先来看一个例子 1 package com.tuhooo.bigdecimal; 2 3 /** 4 * Created by tuhooo

Java 中几个重要的关键字

Java中的关键字特别多,大致如下: 访问控制 private protected public 类,方法和变量修饰符 abstract class extends final implements interface native new static strictfp synchronized transient volatile 程序控制 break continue return do while if else for instanceof switch case default 异常

深入剖析Java中的装箱和拆箱

阅读目录 一.什么是装箱?什么是拆箱?二.装箱和拆箱是如何实现的三.面试中相关的问题 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱.拆箱相关的问题. 回到顶部 一.什么是装箱?什么是拆箱? 我们知道 Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料.在Java SE5之前,如果要生成

JAVA中只有值传递

今天,我在一本面试书上看到了关于java的一个参数传递的问题: 写道 java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? 我毫无疑问的回答:"引用传递!",并且还觉得自己对java的这一特性很是熟悉! 结果发现,我错了! 答案是: 值传递!Java中只有按值传递,没有按引用传递! 回家后我就迫不及待地查询了这个问题,觉得自己对java这么基础的问题都搞错实在太丢人! 综合网上的描述,我大概了解了是怎么回事,现在整理如下,如有不对之处望大神提出! 先来看一个作为程序员都熟

Java中如何优雅正确的终止线程

Java中终止线程的方式主要有三种: 1.使用stop()方法,已被弃用.原因是:stop()是立即终止,会导致一些数据被到处理一部分就会被终止,而用户并不知道哪些数据被处理,哪些没有被处理,产生了不完整的"残疾"数据,不符合完整性,所以被废弃.So, forget it! 2.使用volatile标志位 看一个简单的例子: 首先,实现一个Runnable接口,在其中定义volatile标志位,在run()方法中使用标志位控制程序运行 public class MyRunnable i

Java中I/O流之数据流

Java 中的数据流: 对于某问题:将一个 long 类型的数据写到文件中,有办法吗?    转字符串 → 通过 getbytes() 写进去,费劲,而且在此过程中 long 类型的数需要不断地转换. 现在,Java 中的数据流能够很好的解决这个问题(不需要转换,直接写进去) 1. DataInputStream 与 DataOutputStream 分别继承自 InputStream.OutputStream, 它属于处理流,需要分别套接在 InputStream.OutputStream 类