CardLayout布局练习(小的图片浏览器)

简介: 1 /* 2 涉及Panel中的图片的加载,还有Frame的关闭的方法, CardLayout(int hgap, int vgap)就会决定卡片面板的大小 3 匿名类的使用。。。 4 */ 5 import java.
 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 }

 

目录
相关文章
|
7月前
|
JavaScript 对象存储
在阿里云OpenAPI 为什么oss 图片链接, 在浏览器访问直接下载了,不是预览呢?
在阿里云OpenAPI 为什么oss 图片链接, 在浏览器访问直接下载了,不是预览呢?
477 1
|
JavaScript Windows 容器
Flutter Web:根据浏览器窗口改变布局大小
之前我们通过flutter开发web应用,然后用electron打包成可执行文件在pc端使用,因为electron可以设置最小宽高,所以布局不会越界,但是如果直接在浏览器中打开,因为浏览器的大小无法控制,如果用户缩小浏览器会导致布局越界。根据大部分网站的经验来看,当窗口缩小到一定程度后,布局就不会再改变,反而是增加了滚动,这样就保证了布局的正确性,所以我们也打算这么做。
1197 0
|
3月前
|
域名解析 应用服务中间件 对象存储
解决阿里云oss图片浏览器访问直接下载而不是打开
解决阿里云oss图片浏览器访问直接下载而不是打开
547 0
|
9月前
Qt图片浏览器
可以显示jpg、jpeg、png、bmp。可以从电脑上拖动图到窗口并显示出来或者打开文件选择 重载实现dragEnterEvent(拖拽)、dropEvent(拖拽放下)、resizeEvent(窗口大小改变)
80 0
|
9月前
|
Swift iOS开发
iOS PhotoBrowser 横竖屏图片浏览器
iOS PhotoBrowser 横竖屏图片浏览器
105 0
|
10月前
|
Web App开发 存储 开发者
从浏览器保存的图片打不开,该咋办?
从浏览器保存的图片打不开,该咋办?
|
JavaScript 前端开发
js: color-thief在浏览器中拾取图片的主色调
js: color-thief在浏览器中拾取图片的主色调
233 0
js: color-thief在浏览器中拾取图片的主色调
|
Swift
swift之图片浏览器
swift之图片浏览器
334 0
swift之图片浏览器
|
JavaScript 前端开发
浏览器什么时候会发起网络请求,去加载一张图片?
浏览器什么时候会发起网络请求,去加载一张图片?
239 1
浏览器什么时候会发起网络请求,去加载一张图片?