首页 > 代码库 > 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 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。