1 /*
 2 涉及Panel中的图片的加载,还有Frame的关闭的方法, CardLayout(int hgap, int vgap)就会决定卡片面板的大小
 3 匿名类的使用。。。
 4 */
 5 import java.awt.*;
 6 import java.awt.event.*;
 7 import javax.swing.*;
 8 public class CardLayoutDemo extends Frame{
 9    Panel pCards=new Panel();//卡片面板
10    CardLayout Clayout=new CardLayout(120, 50);//设置卡片和面板边界的垂直和水平距离
11    public CardLayoutDemo(){
12          setLayout(new BorderLayout(100, 20));
13          Panel pBtn = new Panel();//按钮面板
14
15            pCards.setLayout(Clayout);
16            //pCards.setPreferredSize(new Dimension(30,40));//这句不再起作用了:因为其父类CardLayoutDemo使用的是BorderLayout布局方式,会自动填充
17            pCards.setBackground(Color.red);
18            pBtn.setBackground(Color.yellow);
19        pBtn.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
20            pBtn.setPreferredSize(new Dimension(200, 50));
21
22           Button tmpB;
23        pBtn.add(tmpB = new Button("第一张"));
24              tmpB.addActionListener(new myActionListener());
25                tmpB.setActionCommand("first");
26        pBtn.add(tmpB = new Button("下一张"));
27              tmpB.addActionListener(new myActionListener());
28                tmpB.setActionCommand("next");
29
30        pBtn.add(tmpB = new Button("前一张"));
31              tmpB.addActionListener(new myActionListener());
32                tmpB.setActionCommand("previous");
33
34        pBtn.add(tmpB = new Button("最后一张"));
35              tmpB.addActionListener(new myActionListener());
36                tmpB.setActionCommand("last");
37
38
39        for(int i=1; i<=4; ++i){
40               myPanel tmpP;
41             pCards.add(""+i, tmpP=new myPanel(i){
42                   public void paint(Graphics g){
43               g.drawImage(new ImageIcon("zjy"+i+".jpg").getImage(), 20, 0, 300, 400, this);
44              }
45             });
46               tmpP.setBackground(Color.blue);
47               //tmpP.setSize(new Dimension(300, 400));//tmpP接受了匿名类对象,可以通过这种方法更改匿名类的属性
48               //这里不设置的原因是它的大小由CardLayout(int hgap, int vgap)决定了
49          }
50            add(pBtn, "North");
51            add(pCards, "Center");
52    }
53    class myActionListener implements ActionListener{
54     public void actionPerformed(ActionEvent e){
55        String str=e.getActionCommand();
56        if(str.equals("first"))
57            Clayout.first(pCards);
58         else if(str.equals("next"))
59            Clayout.next(pCards);
60         else if(str.equals("previous"))
61            Clayout.previous(pCards);
62         else if(str.equals("last"))
63            Clayout.last(pCards);
64        }
65     }
66
67     public static void main(String args[]){
68        CardLayoutDemo myWindow = new CardLayoutDemo();
69        myWindow.setSize(new Dimension(600, 600));
70        myWindow.setResizable(false);
71        myWindow.addWindowListener(new myClosingListener());
72        myWindow.setVisible(true);
73     }
74 }
75
76
77 class myClosingListener extends WindowAdapter{
78    public void windowClosing(WindowEvent e){
79       System.exit(0);
80    }
81 }
82
83 class myPanel extends Panel{
84    int i;
85    public myPanel(int i){
86       this.i=i;
87    }
88 }

转载于:https://www.cnblogs.com/hujunzheng/p/3811123.html

CardLayout布局练习(小的图片浏览器)相关推荐

  1. Android小程序(3)--简单图片浏览器

    简单图片浏览器 此使用的知识点是XML布局文件与Java代码的混合来控制UI界面. 首先在布局文件中定义简单的线性布局容器: <?xml version="1.0" enco ...

  2. ImageView组件的应用:图片浏览器

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 本实例用来练习ImageView组件的使用,实现一个图片浏览器,该图片浏览器可以改变所查看的图片的透明度,切换 ...

  3. 微信小程序图片裁剪功能的实现

    文章目录 图片上传与处理 图片尺寸适配 图片显示与裁剪框 裁剪框的拖动与缩放 增加canvas并裁剪图片 保存图片到相册 总结 在之前的博文中,已经介绍了如何使用在前端开发中,实现较方便自由的图片裁剪 ...

  4. Qt实战(四)——图片浏览器

    图片浏览器逻辑   实现图片浏览器用到了前面几乎所有的知识,包括窗口部件.布局.事件.对象模型与容器类.图形视图.模型/视图编程以及多线程等.大致流程为:首先定义一个图片类,该类包含图片的路径.文件名 ...

  5. 利用PyQt打造一款适合自己的图片浏览器

    电脑自带的图片浏览器,很好用,但不是万能的.现实中有各种特殊需求,因此有时为了方便,量身打造一款适合自己的图片浏览器可能是有必要的.各种特殊需求总是不一样的,我这儿的特殊需求就是:我有成百上千的图片需 ...

  6. Android学习之打造美女图片浏览器

    本文旨在教你打造一个真实的一个图片浏览器,并非写一堆链接用来测试:也算是用到Android基本的常用的知识,对于初学者来说是一个不错的练手demo:当然本文对于图片加载也有自己的一些见解,希望可以帮助 ...

  7. 【Android 应用开发】AndroidUI设计 之 图片浏览器

    图片浏览器效果图 : 源码下载地址 : -- CSDN : http://download.csdn.net/detail/han1202012/6875083 -- GitHub : https:/ ...

  8. Android:相对布局综合小演练—智能家居,按键快速美化的小技巧

    一.相对布局综合小演练-智能家居 需要用到的图片 新建一个工程 首先,里面的                 android:paddingBottom="@dimen/activity_v ...

  9. 仿快图系统自带图片浏览器应用源码项目

    仿快图系统自带图片浏览器应用源码,最近在做一个微博i动态模块,需要查看他人相册照片或者微博内容图片等.看到QQ空间那个效果不错,尝试了不少方法来实现,均不是怎么理想.最初是想通过自定义GroupVie ...

最新文章

  1. GaitSet:通过交叉视角步态识别
  2. SPOJ 1811. POJ 2774 . 最大公共子串
  3. php代码getsubstr,ThinkPHP 模板substr的截取字符串函数实例讲解
  4. Android 系统(152)---Android多线程:HandlerThread详细使用手册
  5. python爬取网页文本_手把手教你如何用Python爬取网站文本信息
  6. python2.7初学(〇)
  7. 画数轴的步骤_上分助手北师大数学七年级上册第二章有理数第二节数轴详细拆解...
  8. java基本数据类型存放在哪?
  9. 宽度学习(BLS)实战——python复刻MNIST数据集的数据预处理及训练过程
  10. 压垮硬盘的最后一次备份
  11. Activiti工作流表结构详解
  12. python画箭头_python画箭头(用内置的函数)怎么画?
  13. 小学计算机写字板教案,小学第二册信息技术《第9课走进“写字板”》教学参考...
  14. 计算机网络第三章数据链路层习题答案
  15. 勃林格殷格翰与Lifebit合作识别全球传染病暴发;百济神州和Shoreline Biosciences达成合作 | 医药健闻...
  16. FPGA输出五路PWM
  17. 【转】RMAN-06094: datafile 1 must be restored ID 1339439.1
  18. 【无标题】Java画板简易实现
  19. Tensorflow安装方法 (一)【 使用国内镜像下载】
  20. iconfont字体图标下载

热门文章

  1. *计算机应用基础* 说课稿,中职计算机应用基础《EXCEL中函数的使用》说课稿.doc...
  2. flowable 数据库表结构 梳理
  3. Jenkins_安装基础软件_入门试炼03
  4. JavaScript 中,break , continue , return 的区别
  5. python xml etree word_使用python格式化插入的元素xml.etree模块,包括新行
  6. binlog日志_mysql 重要日志文件总结
  7. dell服务器怎么看硬件状态,从DELL 2950和DELL R710看服务器硬件
  8. 变量命名 – 匈利亚命名法则 - C语言零基础入门教程
  9. Python set list dict tuple 区别和相互转换 - Python零基础入门教程
  10. mino文件服务器删除文件,Spring-minio