CardLayout布局练习(小的图片浏览器)
生活随笔
收集整理的這篇文章主要介紹了
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 }
?
轉載于:https://www.cnblogs.com/hujunzheng/p/3811123.html
總結
以上是生活随笔為你收集整理的CardLayout布局练习(小的图片浏览器)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 合页修复固定板通用吗?
- 下一篇: 刷乳胶漆之前要刷底漆吗?