JAVA程序设计:第10章 GUI应用程序设计

上传人:公**** 文档编号:569827167 上传时间:2024-07-31 格式:PPT 页数:31 大小:93KB
返回 下载 相关 举报
JAVA程序设计:第10章 GUI应用程序设计_第1页
第1页 / 共31页
JAVA程序设计:第10章 GUI应用程序设计_第2页
第2页 / 共31页
JAVA程序设计:第10章 GUI应用程序设计_第3页
第3页 / 共31页
JAVA程序设计:第10章 GUI应用程序设计_第4页
第4页 / 共31页
JAVA程序设计:第10章 GUI应用程序设计_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《JAVA程序设计:第10章 GUI应用程序设计》由会员分享,可在线阅读,更多相关《JAVA程序设计:第10章 GUI应用程序设计(31页珍藏版)》请在金锄头文库上搜索。

1、第十章GUIGUI应用程序设计应用程序设计本章内容本章内容Java抽象窗口工具集抽象窗口工具集(AWT)Java组件和容器组件和容器常用组件类型常用组件类型布局管理器及其使用布局管理器及其使用抽象窗口工具集抽象窗口工具集(AWT)AWT- AbstractWindow Toolkit GUI - Graphical User InterfaceAWT中中定定义义了了多多种种类类和和接接口口,用用于于在在Java Application/Applet中进行中进行GUI设计设计java程程序序要要显显示示的的GUI组组件件必必须须是是抽抽象象类类Component或或MenuComponent的子

2、类的子类java.awt 包包java.awt包包提供了基本的提供了基本的java程序程序GUI设计工具。设计工具。Component/MenuComponentContainerLayoutManager组件组件(Component)Java的的图图形形用用户户界界面面的的最最基基本本组组成成部部分分是是组组件件,组组件件是是一一个个可可以以以以图图形形化化的的方方式式显显示示在在屏屏幕幕上上并并能能与与用用户户进进行行交交互互的的对对象象,例例如如一一个个按按钮钮,一个标签等。一个标签等。组组件件不不能能独独立立地地显显示示出出来来,必必须须将将组组件件放放在在一一定定的容器中才可以显示出

3、来。的容器中才可以显示出来。容容 器器(Container)容容器器(Container)实实际际上上是是Component的的子子类类,因因此此容容器器类类对对象象本本身身也也是是一一个个组组件件,具具有有组组件件的的所所有有性性质质,另另外外还还具具有有容容纳纳其其它它组组件件和和容容器器的功能。的功能。容器类对象可使用方法容器类对象可使用方法add()添加组件添加组件两种主要的容器类型两种主要的容器类型Window: 可自由停泊的顶级窗口可自由停泊的顶级窗口Panel:可可作作为为容容器器容容纳纳其其它它组组件件,但但不不能能独独立立存存在在,必须被添加到其它容器中必须被添加到其它容器中

4、(如如Window 或或 Applet)组件定位Java组件在容器中的位置和尺寸由布局管理器决组件在容器中的位置和尺寸由布局管理器决定定如要人工控制组件在容器中的大小位置,可取消如要人工控制组件在容器中的大小位置,可取消布局管理器,然后使用布局管理器,然后使用Component类的下述成员类的下述成员方法:方法:setLocation()setSize()setBounds()Frame类类Frame类是抽象类类是抽象类Window的子类的子类Frame对对象象显显示示效效果果是是一一个个“窗窗口口”,带带有有标标题题和尺寸重置角标和尺寸重置角标默默认认初初始始化化为为不不可可见见的的,可可使

5、使用用setVisible(true)方法使之变为可见方法使之变为可见默认的布局管理器是默认的布局管理器是BorderLayout可使用可使用setLayout()方法改变其默认布局管理器方法改变其默认布局管理器Frame 应用举例(1001) import java.awt.*; public class TestFrame public static void main( String args) Frame f = new Frame(My First Test); f.setSize( 170,100); f.setBackground( Color.blue); f.setVisib

6、le( true); Panel类 提供容纳组件的空间提供容纳组件的空间 可以采用和所在容器不同的布局管理器可以采用和所在容器不同的布局管理器 Panel类的继承层次类的继承层次java.lang.Object | +-java.awt.Component | +-java.awt.Container | +-java.awt.PanelFrameWithPanel应用举例import java.awt.*;public class TestFrameWithPanel public static void main(String args) Frame f = new Frame(MyTes

7、t Frame); Panel pan = new Panel(); f.setSize(200,200); f.setBackground(Color.blue); f.setLayout(null); / 取消布局管理器取消布局管理器 pan.setSize(100,100); pan.setBackground(Color.green); f.add(pan); f.setVisible(true); 布局管理器布局管理器为为了了使使我我们们生生成成的的图图形形用用户户界界面面具具有有良良好好的的平平台台无无关关性性,Java语语言言中中,提提供供了了布布局局管管理理器器这这个个工工具具

8、来来管管理理组组件件在在容容器器中中的的布布局局,而而不使用直接设置组件位置和大小的方式。不使用直接设置组件位置和大小的方式。每每个个容容器器都都有有一一个个布布局局管管理理器器,当当容容器器需需要要对对某某个个组组件件进进行行定定位位或或判判断断其其大大小小尺尺寸寸时时,就会调用其对应的布局管理器。就会调用其对应的布局管理器。5种容器布局 (Container Layouts) FlowLayout BorderLayout GridLayout CardLayout GridBagLayout默认布局管理器ComponentContainerWindowPanelFrameDialogAp

9、pletBorderLayoutFlowLayoutFlowLayout布局管理器FlowLayout是Panel类的默认布局管理器FlowLayout布局对组件逐行定位,行内从左到右,一行排满后换行默认对齐方式为居中对齐不改变组件的大小,按组件原有尺寸显示组件 可在构造方法中设置不同的组件间距、行距及对齐方式FlowLayout 举例(1003)import java.awt.*;public class TestFlowLayout public static void main(String args) Frame f = new Frame(Flow Layout); Button b

10、utton1 = new Button(Ok); Button button2 = new Button(Open); Button button3 = new Button(Close); f.setLayout(new FlowLayout(); f.add(button1); f.add(button2); f.add(button3); f.setSize(100,100); f.setVisible(true); FlowLayout 的构造方法new FlowLayout(FlowLayout.RIGHT,20,40);右对齐,组件之间水平间距20个像素,竖直间距40个像素;new

11、 FlowLayout(FlowLayout.LEFT);左对齐,水平和竖直间距为缺省值:5;new FlowLayout();使用缺省的居中对齐方式,水平和竖直间距为缺省值:5;BorderLayout 布局管理器BorderLayout是Frame类的默认布局管理器BorderLayout将整个容器的布局划分成东、西、南、北、中五个区域,组件只能被添加到指定的区域如不指定组件的加入部位,则默认加入到Center区域每个区域只能加入一个组件,如加入多个,则先前加入的组件会被遗弃BorderLayout 布局管理器BorderLayout型布局容器尺寸缩放原则北、南两个区域只能在水平方向缩放(

12、宽度可调整)东、西两个区域只能在垂直方向缩放(高度可调整)中部可在两个方向上缩放North South West Eest CenterBorderLayout举例1004import java.awt.*;public class TestBorderLayout public static void main(String args) Frame f;f = new Frame(Border Layout);Button bn = new Button(BN);Button bs = new Button(BS);Button bw = new Button(BW);Button be =

13、 new Button(BE);Button bc = new Button(BC);f.add(bn, North);f.add(bs, South);f.add(bw, West);f.add(be, East);f.add(bc, Center);f.setSize(200,200);f.setVisible(true);GridLayout 布局管理器GridLayout型布局管理器将布局划分成规则的矩形网格,每个单元格区域大小相等. 组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到下. 在GridLayout构造方法中指定分割的行数和列数.new GridLayout(3

14、,4);GridLayout举例(1005)import java.awt.*;public class TestGridLayout public static void main(String args) Frame f = new Frame(GridLayout Example); Button b1 = new Button(b1); Button b2 = new Button(b2); Button b3 = new Button(b3); Button b4 = new Button(b4); Button b5 = new Button(b5); Button b6 = ne

15、w Button(b6); f.setLayout (new GridLayout(3,2); f.add(b1); f.add(b2); f.add(b3); f.add(b4); f.add(b5); f.add(b6); f.pack(); f.setVisible(true); * CardLayout 布局管理器CardLayout布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间,就好象一叠卡片摞在一起。注意:在一张卡片中只能显示一个组件,因此可以使用容器嵌套方法显示多个组件。 * GridBagLayout 布局管理器AWT中最灵活、最复杂的布局管理器,各组件所占空间可

16、以不相同且灵活规定,参见中文参考书;容器的嵌套使用举例import java.awt.*;public class NestedContainer public static void main(String args) Frame f = new Frame(NestedContainer);Button b0 = new Button(display Area);Panel p = new Panel();p.setLayout(new GridLayout(2,2);Button b1 = new Button(1);Button b2 = new Button(2);Button b3

17、 = new Button(3);Button b4 = new Button(4);p.add(b1); p.add(b2);p.add(b3);p.add(b4); f.add(b0, North);f.add(p, Center);f.pack(); f.setVisible(true); 布局管理器总结(1)FrameFrame是一个顶级窗口。Frame的缺省布局管理器为BorderLayout。PanelPanel无法单独显示,必须添加到某个容器中。Panel的缺省布局管理器为FlowLayout。当把Panel作为一个组件添加到某个容器中后,该Panel仍然可以有自己的布局管理器。

18、因此,可以利用Panel使得BorderLayout中某个区域显示多个组件。布局管理器总结(2)在程序中安排组件的位置和大小时,应注意:容器中的布局管理器负责各个组件的大小和位置,因此用户无法在这种情况下设置组件的这些属性。如果试图使用Java语言提供的setLocation(),setSize(),setBounds()等方法,则都会被布局管理器覆盖。如果用户确实需要亲自设置组件大小或位置,则应取消该容器的布局管理器,方法为:setLayout(null);AWT 绘图可以在任何Java组件上绘图(通常Canvas和Panel组件更适合用于绘图)每个Java组件都有一个public void

19、 paint(Graphics g)方法专门用于绘图目的,每次重画该组件时都自动调用paint方法。每个Java组件都有一个Graphics类型的属性,该属性(对象)真正完成在相应组件上的绘图功能。Graphics类中实现了许多绘图方法:- 绘制边框(非填充图形)- 填充特定区域- 绘制其它形状图形AWT 绘图举例import java.awt.*;public class AWTDrawing private Frame f = new Frame( Hello Out There!); private Panel p = new Panel();public void launchFram

20、e() f.add(p); f.setSize( 170,170); f.setBackground( Color.blue); f.setVisible( true); p.setForeground(Color.red); Graphics g = p.getGraphics(); g.drawArc(30,40,50,60,70,80); g.fillArc(30,40,50,60,70,80);public static void main( String args) AWTDrawing guiWindow = new AWTDrawing(); guiWindow.launchFr

21、ame(); AWT 绘图举例import java.awt.*;class SubPanel extends Panelpublic void paint(Graphics g)g.drawString(this is a drawing test!,20,20);g.drawLine(30,60,100,120);g.draw3DRect(60,50,70,30,false);public class AWTDrawing2 private Frame f = new Frame( Hello Out There!); private SubPanel p = new SubPanel()

22、; public void launchFrame() f.add(p); f.setSize(170,170); f.setBackground( new Color(89,145,145); f.setVisible( true); public static void main( String args) AWTDrawing2 guiWindow = new AWTDrawing2(); guiWindow.launchFrame(); 本章内容本章内容Java抽象窗口工具集抽象窗口工具集(AWT)Java组件和容器组件和容器常用组件类型常用组件类型布局管理器及其使用布局管理器及其使用

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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