Java程序设计项目化教程 教学课件 ppt 作者 陈芸_ 第7章

上传人:E**** 文档编号:89355605 上传时间:2019-05-23 格式:PPT 页数:47 大小:593.50KB
返回 下载 相关 举报
Java程序设计项目化教程 教学课件 ppt 作者 陈芸_ 第7章_第1页
第1页 / 共47页
Java程序设计项目化教程 教学课件 ppt 作者 陈芸_ 第7章_第2页
第2页 / 共47页
Java程序设计项目化教程 教学课件 ppt 作者 陈芸_ 第7章_第3页
第3页 / 共47页
Java程序设计项目化教程 教学课件 ppt 作者 陈芸_ 第7章_第4页
第4页 / 共47页
Java程序设计项目化教程 教学课件 ppt 作者 陈芸_ 第7章_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《Java程序设计项目化教程 教学课件 ppt 作者 陈芸_ 第7章》由会员分享,可在线阅读,更多相关《Java程序设计项目化教程 教学课件 ppt 作者 陈芸_ 第7章(47页珍藏版)》请在金锄头文库上搜索。

1、第7章 任务7设计用户登录界面的布局,7.1 任务描述 7.2 技术要点 7.3 任务实施,7.1 任 务 描 述 本章任务是对用户登录界面进行布局设计。通过上一章的学习,我们已经完成了将组件添加到容器中的任务,但是进行图形界面设计,不仅仅只是将组件加到容器中,为使界面合理、美观,我们还应该控制组件在容器中的位置,即进行布局设计。事实上,在第6章的例6-5中由于没有使用布局管理,实际的显示效果如图7-1所示,而设置了布局管理的界面如图7-2所示。,图7-1 未设置布局管理的用户登录界面,图7-2 设置了布局管理的用户登录界面,7.2 技 术 要 点 本章工作任务中的技术要点是简单布局管理。布局

2、设计可以通过直接编码,按照像素尺寸来设置GUI中的组件。例如,在窗口中把一个按钮放在(10,10)处。但是利用这种方法进行布局设计时,由于系统间的差异,用户界面在每个系统中的显示效果不尽相同。,为了使生成的图形用户界面具有良好的平台无关性,Java语言提供了布局管理器(Layout Managers)来管理组件在容器中的布局,而不使用直接设置组件的位置和大小的方式。每个容器都有一个布局管理器,容器中组件的大小和定位都由其决定。当容器需要对某个组件进行定位时,就会调用其对应的布局管理器。常用的布局管理有java.awt包中定义的五种布局管理器类,分别是FlowLayout(流式布局)、Borde

3、 Layout(边界布局)、GridLayout(网格布局)、GridBagLayout (网格包布局)和CardLayout(卡片布局)以及javax.swing提供的BoxLayout(盒式布局)。,当一个容器被创建后,它们有默认布局管理器。其中,JFrame和JDialog的默认布局管理器是BorderLayout;JPanel和JApplet的默认布局管理器是FlowLayout。程序设计中可以通过setLayout()方法重新设置容器的布局管理器。 7.2.1 流式布局(FlowLayout类) FlowLayout类布局方式是将组件从容器的左上角开始,依次从左到右、从上到下放置。当

4、容器被重新设置大小后,则布局也会随之发生改变:各组件的大小不变,但相对位置会发生变化。 表7-1所示是FlowLayout类的常用构造函数及方法。,表7-1 FlowLayout类的常用构造函数及方法,例如: FlowLayout mylayout = new FlowLayout(); FlowLayout exLayout = new FlowLayout(FlowLayout. RIGHT); setLayout(exlayout); /为容器设置新布局 例7-1 FlowLayoutDemo.java 1 import javax.swing.*; 2 import java.awt.

5、*; 3 public class FlowLayoutDemo extends JFrame 4 public FlowLayoutDemo() 5 setLayout(new FlowLayout();,6 setFont(new Font(“Helvetica“, Font.PLAIN, 14); 7 getContentPane().add(new JButton(“Button 1“); 8 getContentPane().add(new JButton(“ Button 2“); 9 getContentPane().add(new JButton(“Button 3“); 10

6、 getContentPane().add(new JButton(“Button 4“); 11 12 public static void main(String args) 13 FlowLayoutDemo window = new FlowLayoutDemo(); 14 window.setTitle(“FlowLayoutDemo Application“); 15 window.pack();,16 window.setVisible(true); 17 18 pack( )是从类java.awt.Window继承的方法,作用是自动调整界面大小,使组件刚好在容器中显示出来。使用

7、pack()方法后,可以不需使用setSize方法设置窗口大小。从图7-3中可以看到,当容器大小发生变化时,随之变化的是组件之间的相对位置。,图7-3 FlowLayout类的布局效果,7.2.2 边界布局(BorderLayout类) BorderLayout类的布局方式提供了更复杂的布局控制方法,它包括五个区域:North、South、East、West和Center,其方位依据上北下南左西右东而定。当容器的尺寸发生变化时,各组件的相对位置不变,但中间部分组件的尺寸会发生变化,南北组件的高度不变,东西组件的宽度不变。 表7-2所示为BorderLayout类的常用构造函数及方法。,表7-2

8、 BorderLayout类的常用构造函数及方法,如果容器使用了BorderLayout类的布局方式,则用add()方法往容器中添加组件时必须指明添加的位置,否则组件将无法正确显示(不同的布局管理器,向容器中添加组件的方法也不同)。 例如: add(“West“, new Button(“West“); add(“North“, new Button(“North“); add(new Button(“West“), BorderLayout.SOUTH);,若没有指明放置位置,则表明为默认的“Center”方位。每个区域只能添加一个组件,若添加多个,则只能显示最后一个。如果想在一个区域添加多

9、个组件,则必须先在该区域放一个JPanel容器,再将多个组件放在该JPanel容器中。若某个区域或若干个区域没有放置组件,东、西、南、北区域将不会有预留,而中间区域将置空。 BorderLayout类的布局效果如图7-4所示。,图7-4 BorderLayout类的布局效果,例7-2 BorderLayoutDemo.java 1 import javax.swing.*; 2 import java.awt.*; 3 public class BorderLayoutDemo extends JFrame 4 public BorderLayoutDemo() 5 setLayout(new

10、 BorderLayout(5,5); 6 setFont(new Font(“Helvetica“, Font.PLAIN, 14); 7 getContentPane().add(“North“, new JButton (“North“); 8 getContentPane().add(“South“, new JButton (“South“);,9 getContentPane().add(“East“, new JButton(“East“); 10 getContentPane().add(“West“, new JButton(“West“); 11 getContentPan

11、e().add(“Center“,new JButton(“Center“); 12 13 public static void main(String args) 14 BorderLayoutDemo window = new BorderLayoutDemo(); 15 window.setTitle(“BorderWindow Application“); 16 window.pack(); 17 window.setVisible(true); 18 19 ,7.2.3 网格布局(GridLayout类) GridLayout类的布局方式可以使容器中的各组件呈网格状分布。容器中各组件

12、的高度和宽度相同,当容器的尺寸发生变化时,各组件的相对位置不变,但各自的尺寸会发生变化。各组件的排列方式为从左到右,从上到下。与Border Layout类相类似,如果想在一个网格单元中添加多个组件,则必须先在该网格单元放一个中间容器,再将多个组件放在该中间容器中。 表7-3所示为GridLayout类的常用构造函数及方法。,表7-3 GridLayout类的常用构造函数及方法,表7-3中,rows或cols可以有一个为0。若rows为0,则表示每行放置cols个组件,根据具体组件数,可以有任意多行;若cols为0,则表示共有rows行,根据具体组件数,每行可以放置任意多个组件。 GridLa

13、yout类的布局效果如图7-5所示。,图7-5 GridLayout类的布局效果,例7-3 GridLayoutDemo.java 1 import javax.swing.*; 2 import java.awt.*; 3 public class GridLayoutDemo extends JFrame 4 public GridLayoutDemo() 5 setLayout(new GridLayout(3,2); 6 setFont(new Font(“Helvetica“, Font.PLAIN, 14); 7 getContentPane().add(new JButton(“

14、Button 1“); 8 getContentPane().add(new JButton(“Button 2“); 9 getContentPane().add(new JButton(“Button 3“); 10 getContentPane().add(new JButton(“Button 4“);,11 getContentPane().add(new JButton(“Button 5“); 12 13 public static void main(String args) 14 GridLayoutDemo window = new GridLayoutDemo(); 15

15、 window.setTitle(“GridWindow Application“); 16 window.pack(); 17 window.setVisible(true); 18 19 ,7.2.4 卡片布局(CardLayout类) CardLayout类的布局方式可以帮助用户处理两个或更多的组件共享同一显示空间。共享空间的组件之间的关系就像一摞牌,组件摞在一起,只有最上面的组件是可见的。 CardLayout可以像换牌一样处理这些共享空间的组件,为每张牌定义一个名字,可按名字选牌;可以按顺序向前或向后翻牌;也可以直接选第一张或最后一张牌。 表7-4所示为CardLayout类的常用构

16、造函数及方法。,表7-4 CardLayout类的常用构造函数及方法,与BorderLayout类和GridLayout类相类似,每张牌中只能放置一个组件,如果想在一张牌中放置多个组件,则必须先在该牌中放一个容器,再将多个组件放在该容器中。 假设将容器jp_card设置为CardLayout类的布局方式,则一般步骤如下: (1) 创建CardLayout对象作为布局管理。例如: CardLayout cards=new CardLayout(); (2) 使用容器的setLayout()方法为容器设置布局方式。例如: JPanel jp_cards= new JPanel(); jp_cards.setLayout(ca

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号