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;
   }
}

目录
相关文章
|
4月前
QML (控件位置布局)之(Anchors)锚布局
QML (控件位置布局)之(Anchors)锚布局
212 2
WPF-布局样式练习-Day02-聊天气泡
WPF-布局样式练习-Day02-聊天气泡
203 1
|
JSON Android开发 数据格式
原生app开发技巧——底部导航栏动画效果按钮制作方法之采用photoshop制作gif动画-过渡动画关键帧
原生app开发技巧——底部导航栏动画效果按钮制作方法之采用photoshop制作gif动画-过渡动画关键帧
原生app开发技巧——底部导航栏动画效果按钮制作方法之采用photoshop制作gif动画-过渡动画关键帧
|
Android开发
关于安卓竖直滚动文字自定义控件的探索
安卓竖直滚动文字自定义控件
120 0
|
Android开发 iOS开发
Xamarin自定义布局系列——瀑布流布局
原文:Xamarin自定义布局系列——瀑布流布局 Xamarin.Forms以Xamarin.Android和Xamarin.iOS等为基础,自己实现了一整套比较完整的UI框架,包含了绝大多数常用的控件,如下图 虽然XF(Xamarin.Forms简称XF,下同)为我们提供大这么多的控件,但在实际使用中,会发现这些控件的可定制性特别差,基本上都需要里利用Renderer来做一些修改。
1122 0
|
Web App开发 C# Windows
WPF图片浏览器(显示大图、小图等)
原文:WPF图片浏览器(显示大图、小图等) 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangshubo1989/article/details/46784601 1.概述                最近利用WPF做了一个图片浏览器,能够将文件夹中的所有图片以小图的形式显示,并将选中的图片以512*512大小显示。
2585 0
|
Android开发
【Android视图效果】仿QQ空间滑动改变标题栏颜色
最近在倒腾公司之前的项目,发现之前的界面是个白色标题栏,不是很美观,所以做了些改进。 先看效果图 165815uykp80g8y3goo5vz.gif 简单说下思路,整个布局大体上是ScrollView里面包含了一个ImageView和RecyclerView,所以先得到ImageView的高度,当ScrollView向上滑动时,设置标题栏的背景色、文字颜色,当超过ImageView的高度时,设置其背景为白色,字体为黑色。
1158 0
|
Android开发
Android 优化个人封装仿网易新闻可滑动标题栏 TabLayout (文字或图标)
      小菜在向朋友推荐了自己修改封装的仿网易顶部滑动标题栏 TabSlideLayout 滑动内容可以是文字也可以是网络图标,其原型为 FlycoTabLayout,但是因为年代很久远,小菜当时技术太渣,存在一些小问题,后期做过一些优化,今天趁机会整理一下。
3019 0
|
C#
WPF ScrollViewer(滚动条) 自定义样式表制作 (改良+美化)
原文:WPF ScrollViewer(滚动条) 自定义样式表制作 (改良+美化) 注释直接写在代码里了   不太理解意思的 可以先去看看我上一篇  WPF ScrollViewer(滚动条)  自定义样式表制作 图文并茂 滚动条因为要在触摸屏上用  所以我设计的很宽 宽度可以自己改  把宽度变量...
2070 0
uwp 图片切换动画 使用帧动画
原文:uwp 图片切换动画 使用帧动画 上一篇博客使用了Timer来实现图片的切换,@lindexi_gd讨论了一下性能,我本人其实对性能这一方面不太熟,但我觉得还是有必要考虑一下,那么今天我们使用帧动画开实现以下 新建项目,添加一个Button和Image 在Page里定义资源 ...
933 0