JavaGUI布局管理器.ppt

上传人:za****8 文档编号:14645968 上传时间:2020-07-27 格式:PPT 页数:24 大小:283.16KB
收藏 版权申诉 举报 下载
JavaGUI布局管理器.ppt_第1页
第1页 / 共24页
JavaGUI布局管理器.ppt_第2页
第2页 / 共24页
JavaGUI布局管理器.ppt_第3页
第3页 / 共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定义面板; 面板必须包含在另一个容器中; JPanel类的

5、常用构造方法: 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 ) te

6、stJPanel 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( ); fillComponent

7、(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 main(St

10、ring 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=new JPanel

11、( ); / 定义一个面板 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); catch(Exce

12、ption 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布局,BorderLayout布局是将空

13、间划分为东、西、南、北、中五个区域;分别采用五个字符串表示: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.*; public class testBorder

14、Layout 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); / 将各个按钮加入到指定的位置 c.add(buttons0,BorderLa

15、yout.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( ); layout=new BorderLayout(5,5); c

16、ontentPane.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); ,

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!