/*
涉及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布局练习(小的图片浏览器)的更多相关文章

  1. Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式

    Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式 Fragment FragmentManager frag ...

  2. swift项目初体验--教你打造一款个性化图片浏览器(篇幅过大,慎入)

    项目需求:做一个图片浏览器,点击图片查看大图,大图模式下,左右滚动能查看不同的图片. 项目的主要核心技术:图片的弹出和消失动画     项目源代码: Photo-Browser   一.对代码进行重构 ...

  3. Android 图片浏览器 从原来位置放大至全屏显示

    android 图片浏览器 特点: 1.从网络加载图片,只需要传图片地址数组即可 2.点击图片,从原来位置放大至全屏 3.支持手势操作 4.完全自定义布局 项目源码请到GitHub下载:https:/ ...

  4. css通用小笔记03——浏览器窗口变小 div错位的问题

    我最近写网页的时候,经常碰到一个普遍的问题,经过我的查阅和尝试,终于解决了这一问题,这里有两种方法提供给大家,如果博友还有更好的方法,欢迎补充. 一.使用min-width属性: 我们先看看下面这段代 ...

  5. QT_SVG格式图片浏览器_源代码下载_详细注释

    源代码链接: http://pan.baidu.com/s/1pKA5Vcv 密码: ib2x 注:SVG格式图片特点: 1. 文件小 2. 图像中文字独立于图像, 可以编辑,可搜索. 3.没有字体限 ...

  6. Android中轴旋转特效实现,制作别样的图片浏览器

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/10766017 Android API Demos中有很多非常Nice的例子,这些例 ...

  7. Android 高级UI设计笔记15:HorizontalScrollView之 实现画廊式图片浏览器

    1. HorizontalScrollView 本来,画廊式的图片浏览器,使用Android中的Gallery就能轻松完成,但是Google说Gallery每次切换图片时都要新建视图,造成太多的资源浪 ...

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

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

  9. [Android] 对自定义图片浏览器经常内存溢出的一些优化

    首先关于异步加载图片可以参见 夏安明 的博客:http://blog.csdn.net/xiaanming/article/details/9825113 这篇文章最近有了新的更改,大概看了一下,内容 ...

随机推荐

  1. JBoss CLI

    转自http://www.cnblogs.com/inteliot/archive/2012/08/05/2623719.html   为 了便于维护和管理, JBoss AS 7 提供了命令行接口( ...

  2. 网页播放器(jsp、js)

    jsp对控件显示 <%@ page language="java" import="java.util.*" pageEncoding="UTF ...

  3. python 调用nmap

    1.系统中需要安装nmap 2.系统中安装pip 2.安装python调用nmap的lib包 命令为:pip install python-nmap 以下是在centos系统下安装成功后的截图 在命令 ...

  4. 跟visual studio 集成的git插件

    目前有三个,git extension,微软的 visual studio tools for git extension,还有git source control provider 经测试,最好用的 ...

  5. WebRTC实现网页版多人视频聊天室

    因为产品中要加入网页中网络会议的功能,这几天都在倒腾 WebRTC,现在分享下工作成果. 话说 WebRTC Real Time Communication 简称 RTC,是谷歌若干年前收购的一项技术 ...

  6. 人人都是 DBA(II)SQL Server 元数据

    SQL Server 中维护了一组表用于存储 SQL Server 中所有的对象.数据类型.约束条件.配置选项.可用资源等信息,这些信息称为元数据信息(Metadata),而这些表称为系统基础表(Sy ...

  7. angular中的MVVM模式

    在开始介绍angular原理之前,我们有必要先了解下mvvm模式在angular中运用.虽然在angular社区一直将angular统称为前端MVC框架,同时angular团队也称它为MVW(What ...

  8. angularjs ng-option ie issue解决方案

    最近遇见angularjs 在IE上当使用ng-options作为select的选项数据源,并且被套在ng-switch(ng-transclude)之类的,当angular上得ng-options数 ...

  9. 全面理解Javascript闭包和闭包的几种写法及用途

    好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了.好了,进入正题,今天来说一说javascript里面的闭包吧!本篇博客主要讲一些实用的东西,主要将闭包的写法.用法和用途.  一.什么 ...

  10. Homebrew简介及安装

    Homebrew官网 http://brew.sh/index_zh-cn.html Homebrew是神马 linux系统有个让人蛋疼的通病,软件包依赖,好在当前主流的两大发行版本都自带了解决方案, ...