CardLayout布局练习(小的图片浏览器)
/*
涉及Panel中的图片的加载,还有Frame的关闭的方法, CardLayout(int hgap, int vgap)就会决定卡片面板的大小
匿名类的使用。。。
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CardLayoutDemo extends Frame{
Panel pCards=new Panel();//卡片面板
CardLayout Clayout=new CardLayout(120, 50);//设置卡片和面板边界的垂直和水平距离
public CardLayoutDemo(){
setLayout(new BorderLayout(100, 20));
Panel pBtn = new Panel();//按钮面板 pCards.setLayout(Clayout);
//pCards.setPreferredSize(new Dimension(30,40));//这句不再起作用了:因为其父类CardLayoutDemo使用的是BorderLayout布局方式,会自动填充
pCards.setBackground(Color.red);
pBtn.setBackground(Color.yellow);
pBtn.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
pBtn.setPreferredSize(new Dimension(200, 50)); Button tmpB;
pBtn.add(tmpB = new Button("第一张"));
tmpB.addActionListener(new myActionListener());
tmpB.setActionCommand("first");
pBtn.add(tmpB = new Button("下一张"));
tmpB.addActionListener(new myActionListener());
tmpB.setActionCommand("next"); pBtn.add(tmpB = new Button("前一张"));
tmpB.addActionListener(new myActionListener());
tmpB.setActionCommand("previous"); pBtn.add(tmpB = new Button("最后一张"));
tmpB.addActionListener(new myActionListener());
tmpB.setActionCommand("last"); for(int i=1; i<=4; ++i){
myPanel tmpP;
pCards.add(""+i, tmpP=new myPanel(i){
public void paint(Graphics g){
g.drawImage(new ImageIcon("zjy"+i+".jpg").getImage(), 20, 0, 300, 400, this);
}
});
tmpP.setBackground(Color.blue);
//tmpP.setSize(new Dimension(300, 400));//tmpP接受了匿名类对象,可以通过这种方法更改匿名类的属性
//这里不设置的原因是它的大小由CardLayout(int hgap, int vgap)决定了
}
add(pBtn, "North");
add(pCards, "Center");
}
class myActionListener implements ActionListener{
public void actionPerformed(ActionEvent e){
String str=e.getActionCommand();
if(str.equals("first"))
Clayout.first(pCards);
else if(str.equals("next"))
Clayout.next(pCards);
else if(str.equals("previous"))
Clayout.previous(pCards);
else if(str.equals("last"))
Clayout.last(pCards);
}
} public static void main(String args[]){
CardLayoutDemo myWindow = new CardLayoutDemo();
myWindow.setSize(new Dimension(600, 600));
myWindow.setResizable(false);
myWindow.addWindowListener(new myClosingListener());
myWindow.setVisible(true);
}
} class myClosingListener extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.exit(0);
}
} class myPanel extends Panel{
int i;
public myPanel(int i){
this.i=i;
}
}
CardLayout布局练习(小的图片浏览器)的更多相关文章
- Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式
Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式 Fragment FragmentManager frag ...
- swift项目初体验--教你打造一款个性化图片浏览器(篇幅过大,慎入)
项目需求:做一个图片浏览器,点击图片查看大图,大图模式下,左右滚动能查看不同的图片. 项目的主要核心技术:图片的弹出和消失动画 项目源代码: Photo-Browser 一.对代码进行重构 ...
- Android 图片浏览器 从原来位置放大至全屏显示
android 图片浏览器 特点: 1.从网络加载图片,只需要传图片地址数组即可 2.点击图片,从原来位置放大至全屏 3.支持手势操作 4.完全自定义布局 项目源码请到GitHub下载:https:/ ...
- css通用小笔记03——浏览器窗口变小 div错位的问题
我最近写网页的时候,经常碰到一个普遍的问题,经过我的查阅和尝试,终于解决了这一问题,这里有两种方法提供给大家,如果博友还有更好的方法,欢迎补充. 一.使用min-width属性: 我们先看看下面这段代 ...
- QT_SVG格式图片浏览器_源代码下载_详细注释
源代码链接: http://pan.baidu.com/s/1pKA5Vcv 密码: ib2x 注:SVG格式图片特点: 1. 文件小 2. 图像中文字独立于图像, 可以编辑,可搜索. 3.没有字体限 ...
- Android中轴旋转特效实现,制作别样的图片浏览器
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/10766017 Android API Demos中有很多非常Nice的例子,这些例 ...
- Android 高级UI设计笔记15:HorizontalScrollView之 实现画廊式图片浏览器
1. HorizontalScrollView 本来,画廊式的图片浏览器,使用Android中的Gallery就能轻松完成,但是Google说Gallery每次切换图片时都要新建视图,造成太多的资源浪 ...
- 【Android 应用开发】AndroidUI设计 之 图片浏览器
图片浏览器效果图 : 源码下载地址 : -- CSDN : http://download.csdn.net/detail/han1202012/6875083 -- GitHub : https:/ ...
- [Android] 对自定义图片浏览器经常内存溢出的一些优化
首先关于异步加载图片可以参见 夏安明 的博客:http://blog.csdn.net/xiaanming/article/details/9825113 这篇文章最近有了新的更改,大概看了一下,内容 ...
随机推荐
- javascript练习-定义子类
function defineSubclass(superclass, //父类的构造函数 constructor, //新的子类的构造函数 methods, //实例方法:复制至原型中 static ...
- uva 11137 Ingenuous Cubrency
// uva 11137 Ingenuous Cubrency // // 题目大意: // // 输入正整数n,将n写成若干个数的立方之和,有多少种 // // 解题思路: // // 注意到n只有 ...
- Xml生成节点声明
XmlDocument xmlDoc = new XmlDocument(); XmlDeclaration declaration = xmlDoc.CreateXmlDeclaration(&qu ...
- 链表反转 (Multi-method)
链表反转是链表相关问题最基础的知识,做完LeetCode中LinkedList后才会有这种体会,因为ACM算法中不会涉及这一部分.解决这一问题有多种方法,在面试中面试官通常也会要求写出多种.包括sta ...
- RHEL5.8配置NFS服务
机器配置:4C+16GB 操作系统:RedHat Enterprise Linux 5.8 NFS基础 NFS(Network File System)是Linux系统之间使用最为广泛的文件共享协议, ...
- OSD磁盘日常监控
摘要:对ceph OSD磁盘,做好定期的性能数据采集和通电时长管理,长期的数据积累对磁盘的性能与生命周期管理会有一定帮助,同时也能确保整个集群性能的稳定. 磁盘碎片管理 查看磁盘碎片 # xfs_db ...
- SSH 动态端口forwarding是如何工作的
好久没有来了,实在是太懒. 经常用SSH的动态端口forwarding 来FQ,使用像这样的命令: ssh -D 9999 -f -C -q -N sshHost.somewhere.com 这个命令 ...
- Controller的生命周期是Transient还是PerWebRequest?
当我们用在MVC总使用IoC时,大家的Controller生命周期(lifestyle)是以哪种方式注册的呢? 之前我一直没有思考过这个问题.众所周知在MVC开发过程中,大部分的组件都是以PerWeb ...
- 学习设计模式第三 - 基础使用UML表示关系
面向对象的思想中存在如下几种关系,一般为了方便交流都使用UML的类图来展现类之间的关系.所以了解类图中符号的含义对看懂类图,尤其是用类图展示的设计模式很有帮助.下面依次介绍这几种关系 类继承关系 继承 ...
- 作业二--注册GitHub的过程
第一步:打开GitHub官网https://github.com/,在界面中输入账号名称.邮箱.密码,然后点击注册按钮. 第二步:注册完成后,选择Free免费账号完成初始设置. 第三步:验证邮箱,打开 ...