zoukankan      html  css  js  c++  java
  • CardLayout布局练习(小的图片浏览器)

     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 }
  • 相关阅读:
    JSP介绍
    Cookie和Session的原理及异同
    过滤器的使用
    JAVA 集合
    **JVM** 类加载机制
    *JAVA IO/NIO*
    jvm
    ioc
    spring问题总结
    aop详解
  • 原文地址:https://www.cnblogs.com/hujunzheng/p/3811123.html
Copyright © 2011-2022 走看看