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









本文转自 小眼儿 博客园博客,原文链接:http://www.cnblogs.com/hujunzheng/p/3811123.html,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
计算机视觉 C++
基于Qt的简易图片浏览器设计与实现
基于Qt的简易图片浏览器设计与实现
324 1
|
JavaScript 对象存储
在阿里云OpenAPI 为什么oss 图片链接, 在浏览器访问直接下载了,不是预览呢?
在阿里云OpenAPI 为什么oss 图片链接, 在浏览器访问直接下载了,不是预览呢?
1475 1
|
JavaScript Windows 容器
Flutter Web:根据浏览器窗口改变布局大小
之前我们通过flutter开发web应用,然后用electron打包成可执行文件在pc端使用,因为electron可以设置最小宽高,所以布局不会越界,但是如果直接在浏览器中打开,因为浏览器的大小无法控制,如果用户缩小浏览器会导致布局越界。根据大部分网站的经验来看,当窗口缩小到一定程度后,布局就不会再改变,反而是增加了滚动,这样就保证了布局的正确性,所以我们也打算这么做。
1434 0
|
4月前
|
XML 缓存 JSON
为什么浏览器中有些图片、PDF等文件点击后有些是预览,有些是下载
为什么浏览器中有些图片、PDF等文件点击后有些是预览,有些是下载
286 0
|
6月前
|
Web App开发 JavaScript 前端开发
使用 JS 实现在浏览器控制台打印图片 console.image()
在前端开发过程中,调试的时候,我们会使用 console.log 等方式查看数据。但对于图片来说,仅靠展示的数据与结构,是无法想象出图片最终呈现的样子的。 虽然我们可以把图片数据通过 img 标签展示到页面上,或将图片下载下来进行预览。但这样的调试过程实在是复杂,何不实现一个 console.image() 呢?
139 1
使用 JS 实现在浏览器控制台打印图片 console.image()
|
5月前
|
Web App开发 前端开发
canvas保存图片时,谷歌浏览器Chrome报错【解决方案】Not allowed to navigate top frame to data URL
canvas保存图片时,谷歌浏览器Chrome报错【解决方案】Not allowed to navigate top frame to data URL
158 0
|
6月前
|
缓存 算法 API
视觉智能开放平台产品使用合集之如何在Web浏览器中查看处理后的图片
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
165 0
|
7月前
|
域名解析 应用服务中间件 对象存储
解决阿里云oss图片浏览器访问直接下载而不是打开
解决阿里云oss图片浏览器访问直接下载而不是打开
3941 0
|
7月前
|
移动开发 JavaScript
微信公众号H5开发,在微信浏览器打开H5,无法一键下载图片
微信公众号H5开发,在微信浏览器打开H5,无法一键下载图片
268 0
|
JavaScript
Qt图片浏览器
可以显示jpg、jpeg、png、bmp。可以从电脑上拖动图到窗口并显示出来或者打开文件选择 重载实现dragEnterEvent(拖拽)、dropEvent(拖拽放下)、resizeEvent(窗口大小改变)
113 0