第十章图形界面应用程序.ppt
《第十章图形界面应用程序.ppt》由会员分享,可在线阅读,更多相关《第十章图形界面应用程序.ppt(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第十章 图形界面应用程序n组件简介组件简介n布局管理器布局管理器n绘图操作绘图操作n事件处理事件处理n色彩、字体与打印色彩、字体与打印nSwingSwing包中常用的类包中常用的类1AWTAWT简介简介n抽抽象象窗窗口口工工具具(Abstract Window Toolkit,AWT)为为开开发者提供了建立图形用户界面的工具集。主要功能包括:发者提供了建立图形用户界面的工具集。主要功能包括:用户界面组件用户界面组件事件处理模型事件处理模型图形和图象处理工具图形和图象处理工具布局管理器布局管理器数据传送类数据传送类nAWT主主要要涉涉及及java.awt包包,java.awt包包中中提提供供了了
2、图图形形用用户界面设计所使用的类和接口,主要包括户界面设计所使用的类和接口,主要包括3个概念:个概念:组件组件:Component容器容器:Container布局管理器布局管理器:LayoutManager2AWTAWT与与SwingnAWT中中的的组组件件直直接接系系在在本本地地平平台台的的图图形形用用户户界面上,称为重量级构件。界面上,称为重量级构件。nSwing构构件件称称为为轻轻量量级级构构件件,用用JAVA编编写写,是是第第二二代代GUI开开发发工工具具,建建立立在在AWT之之上上,用用新新版版本本的的组组件件替替代代了了旧旧版版本本的的组组件件,提提供供了了许许多多新新的的组组件件
3、和和相相关关的的API。与与平平台台无无关关,包含在包含在javax.swing包中。包中。nComponent类类是是AWT中中大大多多数数组组件件的的父父类类,JComponent类是类是Swing中大多数组件的父类中大多数组件的父类3ObjectBorderLayoutEventFlowLayoutGridBagLayoutMenuComponentMenuBarMenuItemComponentButtonContainerpanelwindowScrollPane.DialogFrameApplet.Java awt 的结构awt结构4Java awt 的组件类库ComponentB
4、uttonCanvasContainerCheckBoxChoiceLabelListScrollbarTextComponentTextAreaPanelScrollPanelWindowTextFieldAppletFrameDialogFileDialog5 支持基本的支持基本的 drawing paint(),update(),repaint()方法显示组件自身。方法显示组件自身。事件处理。事件处理。通通用用的的事事件件处处理理方方法法:handleEvent();特特定定的的事事件件处处理理方方法法,如如 action()组件外观控制组件外观控制字体、颜色字体、颜色 图象处理图象处理
5、Canvases以及多数以及多数container能够显示图象能够显示图象 屏幕上组件大小与位置控制屏幕上组件大小与位置控制 preferredSize(),minimumSize()方方法法可可以以通通知知布布局局管管理理器器组组件件的的最佳与最小的大小最佳与最小的大小Component类提供的功能类提供的功能6容器简介容器简介n组组件件不不能能独独立立地地显显示示出出来来,必必须须将将组组件件放放在在一一定定的容器中才可以显示出来。的容器中才可以显示出来。n容容器器是是一一种种特特殊殊的的组组件件,具具有有组组件件的的所所有有性性质质,主要功能是容纳其他组件和容器。主要功能是容纳其他组件和
6、容器。nContainer类类是是所所有有容容器器类类的的父父类类。容容器器有有两两类类:窗窗口口Window和和面面板板Panel(ScrollPanel),窗窗口口可可以以独立存在,独立存在,面板必须放在其他容器中。面板必须放在其他容器中。n所有容器都通过方法所有容器都通过方法add()向容器中增加组件。向容器中增加组件。n窗窗口口包包括括两两类类:Frame和和Dialog,Frame一一般般作作为为图形界面最顶层的容器。图形界面最顶层的容器。7Frame的使用步骤n创建对象创建对象 Frame fr=new Frame(“My Test”);参数为窗口标题栏中显示的内容参数为窗口标题栏
7、中显示的内容n设置大小设置大小 fr.setSize(500,500);/将窗口设置为指定的像素宽和高将窗口设置为指定的像素宽和高 fr.pack();/自动调整窗口大小自动调整窗口大小n显示显示fr.setVisible(true);n例:例:MyFrame1.java8基本组件的使用方法n创建对象,进行初始化。例创建对象,进行初始化。例 Button b=new Button(“Button Test”);参数为按钮上显示的内容参数为按钮上显示的内容n通过容器的方法通过容器的方法add()将组件添加到容器中,例将组件添加到容器中,例f.add(b);n对其进行事件编程。对其进行事件编程。n
8、例外:例外:有些组件需要多个参数。有些组件需要多个参数。单选项需要创建一个检查框组,将其与单选框关联。单选项需要创建一个检查框组,将其与单选框关联。下拉列表框需要用下拉列表框需要用addItem()方法添加选项。方法添加选项。9例import java.awt.*;public class Comp1 public static void main(String aa)Button b1=new Button(test1);Button b2=new Button(test2);Frame f=new Frame(test);Panel p=new Panel();p.add(b1);p.ad
9、d(b2);f.add(p);f.pack();f.setVisible(true);10例import java.awt.*;public class Comp4 public static void main(String aa)Choice c=new Choice();c.addItem(test1);c.addItem(test2);c.addItem(test3);Frame f=new Frame(test);Panel p=new Panel();p.add(c);f.add(p);f.pack();f.setVisible(true);11例JAVA中的菜单可通过在中的菜单可
10、通过在Frame中设置菜单栏,菜单栏中添中设置菜单栏,菜单栏中添加菜单,菜单中添加菜单项加菜单,菜单中添加菜单项来实现。来实现。import java.awt.*;public class Comp12 public static void main(String aa)Menu m1=new Menu(File);MenuItem m11=new MenuItem(Open);MenuItem m12=new MenuItem(Save);m1.add(m11);m1.add(m12);Menu m2=new Menu(Edit);MenuItem m21=new MenuItem(Past
11、e);MenuItem m22=new MenuItem(Copy);m2.add(m21);m2.add(m22);Menu m3=new Menu(Help);MenuBar mb=new MenuBar();mb.add(m1);mb.add(m2);mb.add(m3);Frame f=new Frame(MyFrame);f.setMenuBar(mb);f.setSize(200,100);f.setVisible(true);12其他容器的使用n对对话话框框需需要要与与Frame相相关关联联,但但不不是是放放在在Frame中中,对对话话框框中中可可以以放放置置组组件件。对对话话框
12、框有有两两种种,一一种种可可以以与与Frame交交互,另一种不可以。互,另一种不可以。n文文件件对对话话框框与与对对话话框框相相似似,也也需需要要与与Frame相相关关联联,用用来来选择文件选择文件n滚动面板可自动产生滚动条。滚动面板可自动产生滚动条。13例import java.awt.*;public class Comp6 public static void main(String aa)Frame f=new Frame(MyFrame);Dialog d=new Dialog(f,Test,true);d.add(new Button(ok);f.setSize(300,300);
13、d.pack();f.setVisible(true);d.setVisible(true);14布局管理器n每每个个容容器器都都有有自自己己的的布布局局管管理理器器,用用来来对对容容器器内的组件进行定位、设置大小、排列顺序等。内的组件进行定位、设置大小、排列顺序等。n使使用用布布局局管管理理器器是是为为了了使使生生成成的的图图形形用用户户界界面面具有良好的平台无关性。具有良好的平台无关性。n主主要要的的布布局局管管理理器器类类包包括括流流布布局局(FlowLayout)、边边 界界 布布 局局(BorderLayout)、网网 格格 布布 局局(GridLayout)、卡卡片片布布局局(Ca
14、rdLayout)、网网格格包布局包布局(CardBagLayout)。15布局管理器的使用方法n创建布局对象创建布局对象 例例 FlowLayout t=new FlowLayout();FlowLayout t=new FlowLayout(FlowLayout.RIGHT);n指定容器使用该布局指定容器使用该布局 例例 fr.setLayout(t);16流布局管理器流布局管理器npanelpanel类的默认布局管理器。类的默认布局管理器。n组组件件按按照照加加入入的的先先后后循循序序从从左左向向右右排排列列,一一行行排满后之后就转到下一行继续从左至右排列排满后之后就转到下一行继续从左至
15、右排列 n每一行中的组件都居中排列每一行中的组件都居中排列 17流布局管理器流布局管理器当调整窗口大小时:当调整窗口大小时:18例import java.awt.*;public class MyFlowprivate Frame f;private Button b1,b2,b3,b4,b5;public static void main(String aa)MyFlow mflow=new MyFlow();mflow.go();public void go()f=new Frame(Flow Layout);f.setLayout(new FlowLayout();b1=new Butt
16、on(ok);b2=new Button(open);b3=new Button(cancel);b4=new Button(insert);b5=new Button(delete);f.add(b1);f.add(b2);f.add(b3);f.add(b4);f.add(b5);f.pack();f.setVisible(true);19边界布局管理器边界布局管理器n顶顶层层容容器器(Frame,Dialog,和和 Applet)的的默默认认布局管理器。布局管理器。n有五个位置组件:有五个位置组件:20边界布局管理器边界布局管理器当调整窗口大小时:当调整窗口大小时:例:例:MyBorde
17、r.java21网格布局管理器网格布局管理器n基基本本布布局局策策略略是是把把容容器器的的空空间间划划分分成成若若干干行行乘乘若若干干列列的的网网格格区区域域,组组件件就就位位于于这这些些划划分分出出来来的小区域中的小区域中。n所有的区域大小一样。所有的区域大小一样。n组件按从左到右,从上到下的方法加入。组件按从左到右,从上到下的方法加入。n用构造函数划分出网格的行数和列数,用构造函数划分出网格的行数和列数,newnewGridLayoutGridLayout(行数,列数行数,列数)。22网格布局管理器网格布局管理器当调整窗口大小时:当调整窗口大小时:例:例:MyGrid.java23卡片布局
18、管理器卡片布局管理器n卡卡片片布布局局管管理理器器将将各各个个界界面面叠叠加加在在一一起起,每每添添加一个组件,都用字符串为其指定一个名字。加一个组件,都用字符串为其指定一个名字。n使使用用卡卡片片布布局局的的show()show()方方法法指指定定当当前前显显示示哪哪个个组件。组件。n例:例:CardTestCardTest.java.java24网格包布局管理器网格包布局管理器n把把窗窗口口分分成成很很多多网网格格,在在网网格格上上划划分分单单元元格格,指指定定每每个个单单元元格格的的位位置置,并并设设置置单单元元格格的的各各种种特特性性,再再将将组组件件放放入指定的单元格。入指定的单元格
19、。n使使用用类类GridBagConstraintsGridBagConstraints可可以以创创建建单单元元格格的的约约束束条条件件,执执行行GridBagLayoutGridBagLayout中中的的setConstraintssetConstraints()()方方法法将将约约束束条条件件加加到到组组件件上上,将将组组件件加加入入容容器器后后,组组件件会会自动添加到约束条件规定的单元格中。自动添加到约束条件规定的单元格中。n使使用用GridBagConstraintsGridBagConstraints 的的gridwithgridwith和和gridheightgridheight属
20、属性性可可以以设设置置单单元元格格占占用用网网格格的的宽宽度度和和高高度度;通通过过设设置置fillfill属属性性,可可以以设设置置组组件件放放入入单单元元格格后后是是左左右右添添满满还还是是上上下下添添满满,或或不不添添满满;通通过过设设置置weightxweightx和和weightyweighty的的值值可可以以设设置置窗窗口口大大小小变变化化时时,单单元元格格跟跟着着变化的比例。变化的比例。n例:例:GBagGBag.java.java25综合实例import java.awt.*;public class Calcprivate Frame f;private Button b0,
21、b1,b2,b3,b4,b5,b6,b7,b8,b9;TextField answer;Panel p;public static void main(String aa)Calc CalcGUI=new Calc();CalcGUI.go();public void go()answer=new TextField(0,15);b0=new Button(0);b1=new Button(1);b2=new Button(2);b3=new Button(3);b4=new Button(4);b5=new Button(5);b6=new Button(6);b7=new Button(7
22、);b8=new Button(8);b9=new Button(9);p=new Panel();p.setLayout(new GridLayout(3,3);p.add(b1);p.add(b2);p.add(b3);p.add(b4);p.add(b5);p.add(b6);p.add(b7);p.add(b8);p.add(b9);f=new Frame(MyCalc);f.setSize(200,200);f.add(answer,North);f.add(p,Center);f.pack();f.setVisible(true);26绘图操作n用用Graphics对象进行各种绘图
23、操作。对象进行各种绘图操作。n为为了了获获得得Graphics对对象象可可以以定定义义Panel子子类类,重重写写paint()方方法法,该该方方法法的的参参数数中中有有一一个个Graphics对象。对象。n当当Panel的的窗窗口口需需要要刷刷新新时时会会自自动动执执行行paint()方法,因此应把绘图操作放在该方法中。方法,因此应把绘图操作放在该方法中。27绘制简单图形和文字绘制简单图形和文字绘制图形:绘制图形:绘制文字:绘制文字:g.g.drawStringdrawString()()例如:例如:g.g.drawStringdrawString(Hello World!,x,y);(He
24、llo World!,x,y);28import java.awt.*;public class TestDraw extends Panel public static void main(String args)Frame f=new Frame(My Drawing);TestDraw mc=new TestDraw();f.add(mc,Center);f.setSize(150,150);f.setVisible(true);public void paint(Graphics g)System.out.println(repainted);Font f=new Font(Times
25、Roman,Font.BOLD,18);g.setFont(f);g.drawString(hello,10,50);g.drawOval(50,50,30,40);g.fillRect(100,100,20,30);例例29Paint()方法执行流程方法执行流程下列情况会自动执行下列情况会自动执行paint()方法:方法:n窗口大小发生变化时;窗口大小发生变化时;n窗窗口口不不可可见见到到可可见见或或被被其其他他窗窗口口遮遮盖盖住住一一部部分分又又移开时;移开时;n执执行行repaint()方方法法时时自自动动调调用用update()方方法法,update()方法执行方法执行paint()方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十 图形界面 应用程序
限制150内