JavaGUI布局管理器.ppt

上传人:本田雅阁 文档编号:2201778 上传时间:2019-03-03 格式:PPT 页数:24 大小:185.51KB
返回 下载 相关 举报
JavaGUI布局管理器.ppt_第1页
第1页 / 共24页
JavaGUI布局管理器.ppt_第2页
第2页 / 共24页
JavaGUI布局管理器.ppt_第3页
第3页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《JavaGUI布局管理器.ppt》由会员分享,可在线阅读,更多相关《JavaGUI布局管理器.ppt(24页珍藏版)》请在三一文库上搜索。

1、1,第11章 GUI布局管理器,本章主要讲述如下内容: Swing常用容器:框架和面板; 布局管理:FlowLayout、BorderLayout、GridLayout和CardLayout。,2,11.1 Swing常用容器,AWT和Swing都提供了容器。讲述Swing中频繁使用的框架和面板。,3,11.1.1 框架,框架( JFrame)是一种独立存在的容器。 JFrame是Frame的子类,JFrame类对象有边框。 JFrame类的常用构造方法如下: 1. public JFrame( ) 2. public JFrame(String title),4,11.1.1 框架(续),注

2、意:框架创建以后是不可见的,必须调用Window类的show( )方法或Component类的setVisible( )方法显示该框架。 编程方法:先定义一个JFrame类的子类,然后在该类的构造方法中调用JFrame类的构造方法;最后,将需要的组件或面板加入到该框架。例如,定义一有用的子类:,import javax.swing.*; public class subJFrame extends JFrame public subJFrame( ) public subJFrame( String title) super(title); protected void frameInit(

3、) super.frameInit( ); / 调用JFrame类的方法,关闭框架 setDefaultCloseOperation(EXIT_ON_CLOSE); ,/ 程序11-1 一个完整的JFrame示例:,import java.awt.*; import javax.swing.*; public class showJFrame public static void main(String args ) showJFrame obj=new showJFrame( ); obj.testJFrame( ); ,public void testJFrame( ) JFrame fr

4、ame=new subJFrame(“TestJFrame“); / 取得内容格 Container contentPane=frame.getContentPane( ); contentPane.setLayout(new FlowLayout( ); contentPane.add(new JButton(“ OK “); contentPane.add(new JTextField(10); frame.setSize(200,100); frame.show( ); ,程序运行结果:,9,11.1.2 面板,Swing采用JPanel定义面板; 面板必须包含在另一个容器中; JPan

5、el类的常用构造方法: 1. public JPanel ( ) /使用缺省的布局管理器 2. public JPanel (LayoutManager layout) 例如:程序11-2定义了两个面板,并设置了不同的前景和背景色。,import java.awt.*; import javax.swing.*; public class testJPanel private void fillComponent(Container c) for(int i=0;i3;i+) c.add(new JButton(“+i); public static void main(String args

6、 ) testJPanel obj=new testJPanel( ); ,public testJPanel( ) JFrame frame=new subJFrame(“testJPanel“); Container contentPane=frame.getContentPane( ); JPanel jp1=new JPanel( ); fillComponent(jp1); / 向面板添加组件 jp1.setBackground(Color.BLUE); jp1.setForeground(Color.ORANGE); JPanel jp2=new JPanel( ); fillCo

7、mponent(jp2); jp2.setBackground(Color.GRAY); jp2.setForeground(Color.BLACK); contentPane.add(jp1,BorderLayout.NORTH); contentPane.add(jp2,BorderLayout.SOUTH); frame.setSize(200,100); frame.show( ); ,程序运行结果:,13,11.2 布局管理器,常用的四种布局管理器:FlowLayout、BorderLayout、CardLayout、GridLayout 布局管理的含义:创建这种类型的一个对象,并采

8、用此对象来安排其它容器和基本组件。 各容器默认的布局管理器:FlowLayout默认为Applet、Panel和JPanel的布局;BorderLayout默认为JApplet和JFrame的布局,14,11.2.1 FlowLayout布局,FlowLayout布局是将组件按加入的先后顺序从左至右排列; 在缺省方式下,FlowLayout布局是将组件放在每行的中央; FlowLayout布局的对齐方式有三种:左、中、右;采用三个常量表示:FlowLayout.LEFT、FlowLayout.RIGHT、FlowLayout.CENTER。,15,11.2.1 FlowLayout布局(续),

9、常用构造方法如下: 1. public FlowLayout( ) / 居中对齐,垂直和水平间隔为5。 2. public FlowLayout( int align ) 生成一个指定对齐方式的FlowLayout对象。 3. public FlowLayout( int align, int hor, int ver) 例如:程序11-3每隔1秒调整组件的对齐方式。,public class testFlowLayout JFrame frame; Container contentPane; JPanel jp; FlowLayout layout; public static void

10、main(String args ) testFlowLayout obj=new testFlowLayout( ); obj.testFlow( ); obj.changeAlign( ); private static void fillComponent(Container c) for(int i=0;i3;i+) c.add(new JButton(“Button “+i); ,public void testFlow ( ) frame=new subJFrame(“testFlowLayout“); contentPane=frame.getContentPane( ); jp

11、=new JPanel( ); / 定义一个面板 layout=new FlowLayout( ); fillComponent(jp); / 向面板添加组件 contentPane.add(jp); layout=new FlowLayout(FlowLayout.CENTER,20,50); contentPane.setLayout(layout); frame.setSize(400,200); frame.show( ); ,public void changeAlign( ) / 改变布局管理方式 for(int i=0;i3;i+) try Thread.sleep(1000);

12、 catch(Exception e)e.printStackTrace( ); switch(i) case 0: layout.setAlignment(FlowLayout.LEFT); break; case 1:layout.setAlignment(FlowLayout.CENTER); break; case 2:layout.setAlignment(FlowLayout.RIGHT); break; / 重新排列各组件 layout.layoutContainer(contentPane); ,程序运行结果如下:,20,11.2.2 BorderLayout布局,Border

13、Layout布局是将空间划分为东、西、南、北、中五个区域;分别采用五个字符串表示:“EAST“、“WEST“、“SOUTH“、“NORTH“和“CENTER“。 BorderLayout的构造方法如下: 1. public BorderLayout( ) / 组件的垂直和水平间隔为0。 2. public BorderLayout( int hgap, int vgap ),例如:程序11-4采用了BorderLayout布局管理器,每隔1秒动态地隐藏组件,直到隐藏完全部的组件,然后按相反顺序重新显示组件。,import java.awt.*; import javax.swing.*; pu

14、blic class testBorderLayout JFrame frame; Container contentPane; BorderLayout layout; JButton buttons ; String names =“North“,“South“, “East“,“West“,“Center“;,private void fillComponent(Container c) buttons=new JButtonnames.length; for(int i=0;inames.length;i+) buttonsi=new JButton(namesi); / 将各个按钮加

15、入到指定的位置 c.add(buttons0,BorderLayout.NORTH); c.add(buttons1,BorderLayout.SOUTH); c.add(buttons2,BorderLayout.EAST); c.add(buttons3,BorderLayout.WEST); c.add(buttons4,BorderLayout.CENTER); ,public void testBorder( ) / 生成一个内容格 frame=new subJFrame(“testBorderLayout“); contentPane=frame.getContentPane( )

16、; layout=new BorderLayout(5,5); contentPane.setLayout(layout); / 向内容格中添加组件 fillComponent(contentPane); frame.setSize(300,200); frame.show( ); / 注意:该方法没有定义面板对象,而是直接将组件加入到内容格,public void hideButton( ) / 隐藏按钮 for(int i=0;inames.length;i+) try Thread.sleep(1000); / 睡眠1秒 catch(Exception e) e.printStackTrace( ); buttonsi.setVisible(false); layout.layoutContainer(contentPane); ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1