版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、图形用户界面的设计与实现图形用户界面的设计与实现教材第教材第7章章 设计原则 容器与布局 标准组件 事件处理 自定义成分用户界面设计原则用户界面设计原则n使用图形界面使用图形界面GUI (Graphics User Interface)v字符界面字符界面采用命令行方式与用户交互。采用命令行方式与用户交互。v图形界面图形界面用多种媒体显示信息,用直观、方便的用多种媒体显示信息,用直观、方便的GUI标标准组件来接收命令。准组件来接收命令。n控制权在用户(用户要由操作的主动权)控制权在用户(用户要由操作的主动权)n界面与操作的风格一致性。界面与操作的风格一致性。n宽容(容错)性。宽容(容错)性。n简
2、洁与美观并重。简洁与美观并重。界面构成界面构成容器标准组件用户自定义成分v创建GUI各组成成分,并安排相互 位置关系(包含,相邻,相交)。v定义GUI各成分对不同事件的响应, 实现与用户的交互与界面功能。界面元素界面元素n容器是用来组织其他界面成分和元素的单元。容器是用来组织其他界面成分和元素的单元。v可以形成容器的层次,构筑复杂结构可以形成容器的层次,构筑复杂结构vWindow(Frame、Applet、Dialog )n组件是图形用户界面的基本单位,它里面不再包含组件是图形用户界面的基本单位,它里面不再包含其他的成分。其他的成分。vGUI组件是图形用户界面标准化的结果。组件是图形用户界面标
3、准化的结果。vGUI组件的作用是完成与用户的交互。组件的作用是完成与用户的交互。n用户自定义成分用户自定义成分v文字、图形、图象文字、图形、图象v不能像标准组件一样被系统识别和承认,只起装饰作用不能像标准组件一样被系统识别和承认,只起装饰作用。v不能响应用户的动作,不具有交互功能。不能响应用户的动作,不具有交互功能。AWT包包nAbstract Windows Toolkit(抽象窗口工具)(抽象窗口工具)vAWT类库中的各种操作是被定义为在一个并不存在的类库中的各种操作是被定义为在一个并不存在的“抽象窗口抽象窗口”中进行的。中进行的。v抽取不同软硬件平台中所实现的窗口的公共特性。抽取不同软硬
4、件平台中所实现的窗口的公共特性。v所设计的界面独立于具体的界面实现所设计的界面独立于具体的界面实现 。n提供与机器无关的基本提供与机器无关的基本GUI标准组件。标准组件。v选择类组件:选择类组件: 单选按钮、复选框、下拉选单、列表框单选按钮、复选框、下拉选单、列表框v文字处理类组件:文字处理类组件: 标签、文本框、编辑框标签、文本框、编辑框v命令类组件:命令类组件: 按钮、工具栏、菜单按钮、工具栏、菜单AWT类层次关系图类层次关系图Component Container Panel Applet Window Frame Dialog ButtonTextFieldTextAreaTextCo
5、mponentCheckboxMenuComponentMenuMenuItemMenuBar其他组件独立不独立Component类类可显示在屏幕上的图形对象,可与用户交互。可显示在屏幕上的图形对象,可与用户交互。n方法:方法:vadd(PopupMenuadd(PopupMenu popup) popup) 加一弹出菜单加一弹出菜单vaddFocusListener(FocusListeneraddFocusListener(FocusListener l) l)将发生在本组件上的将发生在本组件上的事件注册给监听者,以进行事件处理。事件注册给监听者,以进行事件处理。vsetSize(ints
6、etSize(int width, intwidth, int height) height) 设置组件尺寸设置组件尺寸vpainpaint(Graphics(Graphics g) g) 重画组件重画组件vsetFont(FontsetFont(Font f) f) 设置组件字体设置组件字体vsetBackground(ColorsetBackground(Color c) c) 设置组件背景色设置组件背景色vsetForeground(ColorsetForeground(Color c) c) 设置组件前景色设置组件前景色paint和和repaint 方法方法n某组件的某组件的paint
7、()和和 update()为系统自动调用的有关为系统自动调用的有关图形绘制的方法,不可人为编程调用;但可图形绘制的方法,不可人为编程调用;但可编程重编程重新定义其操作内容。新定义其操作内容。n使用使用repaint()方法可以触发方法可以触发update()方法。方法。paint( )当某些操作破坏了显示,需重新绘制时第一次绘制repaint()编程控制1. 擦除并填充成背景色update()调用2. 调用paint()Font类类njava.awt.Font n设计字体显示效果(创建字体对象)设计字体显示效果(创建字体对象)Font fn = new Font(String 字体,字体,in
8、t 风格,风格,int 字号字号);v字体:字体:TimesRoman, Courier, Arial等等v风格:三个常量风格:三个常量Font.PLAIN, Font.BOLD, Font.ITALICv字号:字的大小(磅数)字号:字的大小(磅数)n使用字体对象使用字体对象 如设置某组件当前使用的字体:如设置某组件当前使用的字体:setFont(Font fn)n获取组件当前使用的字体:获取组件当前使用的字体:getFont()Color类类构造函数构造函数1(设置颜色)(设置颜色) Color c = new Color(int red, int green, int blue) 范围范围
9、 :0255 new Color(200,200,200) new Color(255,0,100)n构造函数构造函数2Color c = new Color(int rgb) 兰色:兰色:07 位位 绿色:绿色:815位位 红色:红色:1623位位n 颜色常量值颜色常量值public static final Color public static final Color black Color.black , Color.blue , Color.gray , Color. red Color.white Containers 容器组件容器组件nWindow 不需要其他组件支撑,独立显示。
10、不需要其他组件支撑,独立显示。vFrame vDialog 没有菜单条,不能改变大小没有菜单条,不能改变大小nPanel 必须放在必须放在Window组件中(或组件中(或Web浏览浏览器窗口)才能显示。它为一矩形区域,在其中可摆器窗口)才能显示。它为一矩形区域,在其中可摆放其他组件,可以有自己的布局管理器。放其他组件,可以有自己的布局管理器。n基本方法基本方法vadd(Component comp) 将指定组件放到容器中将指定组件放到容器中vadd(Component comp,int index)vremove(Component comp) 删除指定组件删除指定组件vsetLayout(L
11、ayoutManager mgr) 设置容器布局设置容器布局vpaint 画容器(及其上面的组件)画容器(及其上面的组件)容器的组件布局容器的组件布局n依靠布局管理器(依靠布局管理器(layout manager)方式方式v调用容器的调用容器的setLayout方法,为容器指定某种布局管理器方法,为容器指定某种布局管理器的一个对象。的一个对象。 例:例: setLayout(new FlowLayout() ) v该布局管理器对象负责确定容器中组件的位置和大小。该布局管理器对象负责确定容器中组件的位置和大小。v当容器需要定位组件和确定组件大小时,就会给布局管当容器需要定位组件和确定组件大小时,
12、就会给布局管理器对象发消息,让它完成该项工作。理器对象发消息,让它完成该项工作。n直接管理组件方式直接管理组件方式v调用容器的调用容器的 setLayout(null) 方法,关闭布局管理器。方法,关闭布局管理器。v调用每一个组件的调用每一个组件的setLocation()方法决定组件位置。方法决定组件位置。v调用每一个组件的调用每一个组件的setSize()方法决定其大小。方法决定其大小。n直接管理组件将失去平台无关性。直接管理组件将失去平台无关性。布局管理器对象布局管理器种类布局管理器种类nFlowLayout: 组件在一行中从左至右水平排列,排组件在一行中从左至右水平排列,排满后折行满后
13、折行nBorderLayout:北、南、东、西、中:北、南、东、西、中nGridLayout:以行和列的网格形式安排组件以行和列的网格形式安排组件nGridBagLayout:更复杂、功能更强的网格布局更复杂、功能更强的网格布局nCardLayout:每一个组件作为一个卡片,容器仅每一个组件作为一个卡片,容器仅显示多个卡片中的某一个显示多个卡片中的某一个确定容器布局确定容器布局n缺缺省的布局管理器省的布局管理器vWindow 、Frame、Dialog BorderLayoutvPanel 、Applet FlowLayout:n选择布局管理器的方法选择布局管理器的方法v建立布局管理器类的对象
14、建立布局管理器类的对象v利用容器的利用容器的 setLayout 为容器指定布局(即指定一个布为容器指定布局(即指定一个布局管理器的对象)局管理器的对象)例:将例:将myFrame布局设定为布局设定为FlowLayout类型类型 myFrame.setLayout(new FlowLayout();FramenFrame(String title) 构造一个新的不可见的构造一个新的不可见的framen隐含的布局管理器是:隐含的布局管理器是:BorderLayoutnsetLayout() 设置新的布局管理器。设置新的布局管理器。nadd(Component comp) 在容器上增加一个组件(在
15、容器为不可见的状态时在容器上增加一个组件(在容器为不可见的状态时加)。加)。nvoid setSize(int width, int height) nsetVisible(true)7-1aFrame Panel Frame fm1 = new Frame(Hello); fm1.setSize(400,350); fm1.setBackground(Color.gray); fm1.setLayout(null); Panel pn1 = new Panel(); pn1.setSize(100,100); pn1.setBackground(Color.red); pn1.setLoca
16、tion(0,50); fm1.add(pn1); fm1.setVisible(true); 7-1bFlowLayout布局管理器布局管理器n构造函数:构造函数:vFlowLayout() ;vFlowLayout(int align, int hgap, int vgap);align :对齐方式:对齐方式:LEFT CENTER RIGHThgap :组件水平间距:组件水平间距 (象素)(象素)vgap :组件垂直间距(象素):组件垂直间距(象素)n无参数的构造函数创建的无参数的构造函数创建的FlowLayout对象,其对齐对象,其对齐方式为方式为CENTER居中方式,组件间的横纵间距
17、都为居中方式,组件间的横纵间距都为5个像素。个像素。 FlowLayout布局管理器布局管理器 Frame f = new Frame(FlowLayout); f.setSize(400,300); /不起作用不起作用 f.setBackground(Color.gray); f.setLayout(new FlowLayout(FlowLayout.LEFT,10,20); b1 = new Button(button1); b2 = new Button(button2); b3 = new Button(button3); f.add(b1); f.add(b2); f.add(b3)
18、; f.setVisible(true); f.pack();7-1cBorderLayout布局管理器布局管理器nsetLayout(new BorderLayout() )nadd(b1,BorderLayout.NORTH); n当容器大小改变,组件相对位置不会改变。当容器大小改变,组件相对位置不会改变。CenterNorthSouthWestEastBorderLayout布局管理器布局管理器 f = new Frame(BorderLayout); f.setSize(200,200); b1 = new Button(button1); b5 = new Button(button
19、5); f.add(b1,BorderLayout.NORTH); f.add(b2,BorderLayout.SOUTH); f.add(b3,BorderLayout.WEST); f.add(b4,BorderLayout.EAST); f.add(b5,BorderLayout.CENTER); f.setVisible(true);7-1dBorder-Panelclass MyFrame extends Frame MyFrame() Button b1 = new Button( 1 ); Button b2 = new Button( 2 ); Button b3 = new
20、Button( 3 ); Button b4 = new Button( 4 ); Panel p = new Panel(); p.add(b1); p.add(b2); add(p,BorderLayout.NORTH); add(b3,BorderLayout.WEST); add(b4,BorderLayout.CENTER); pack(); setVisible(true);7-1eGridLayout布局管理器布局管理器n创建创建GridLayout对象作为布局编辑器,指定划分网对象作为布局编辑器,指定划分网格的行数和列数格的行数和列数(网格大小一样)。网格大小一样)。setLa
21、yout(new GridLayout(行数行数, 列数列数);setLayout(new GridLayout(行数行数, 列数列数,行间隔行间隔,列间列间隔隔);n调用容器的方法调用容器的方法add()将组件加入容器,组件填入将组件加入容器,组件填入容器的顺序将按照第一行第一个格中、第一行第二容器的顺序将按照第一行第一个格中、第一行第二个格中、个格中、n每个网格中都必须填入组件,如果希望某个网格为每个网格中都必须填入组件,如果希望某个网格为空白,可以为它加入一个空的标签:空白,可以为它加入一个空的标签: add (new Label();GridLayout布局管理器布局管理器 f = n
22、ew Frame(GridLayout); f.setLayout(new GridLayout(2,3); f.setSize(200,100); f.setBackground(Color.gray); b1 = new Button(1); b6 = new Button(6); f.add(b1); f.setVisible(true);7-1f布局例布局例 Frame fm = new Frame() fm.setLayout(new FlowLayout(); tf = new TextField(22); fm.add(tf); Panel p1 = new Panel(); p
23、1.setLayout(new GridLayout(4,3); p1.add(); Panel p2 = new Panel(); p2.setLayout(new GridLayout(4,3); p2.add(); fm. add(p1); fm. add(p2);7-2布局GridBagLayout布局管理器布局管理器n每个每个GridBagLayout对象维护一个动态矩形网格,对象维护一个动态矩形网格,n每个组件可占据一个或多个单元作为它的显示区域。每个组件可占据一个或多个单元作为它的显示区域。n每一个组件都与一个每一个组件都与一个GridBagConstraints类的实例相连,类
24、的实例相连,以指定在显示区域中如何摆放以指定在显示区域中如何摆放,并可确定大小。并可确定大小。n步骤:步骤:v setLayout(new GridBagLayout(); v GridBagConstraints gbc = new GridBagConstraints();v gbc.gridx = 0; (属性赋值)属性赋值)v add(button1 , gbc )GridBagLayout布局管理器布局管理器n设置设置GridBagConstraints类实例属性值:类实例属性值:ngridx gridy 组件显示区域的左上角单元格坐标组件显示区域的左上角单元格坐标ngridwidt
25、h gridheight 指定显示区域行、列单元数指定显示区域行、列单元数nRELATIVE 指定紧挨着前一个组件摆放指定紧挨着前一个组件摆放nfill 当显示区域大于组件时如何扩充组件:当显示区域大于组件时如何扩充组件:vHORIZONTAL 水平充满水平充满 VERTICAL 垂直充满垂直充满 vBOTH 全部填充全部填充 NONE 不调整(隐含)不调整(隐含)nipadx ipady 指定组件间最小间隔指定组件间最小间隔 nanchor 当显示区域大于组件时如何摆放组件:当显示区域大于组件时如何摆放组件:vCENTER(隐含)(隐含), NORTH, EAST, SOUTH, WEST,
26、 vSOUTHEAST, NORTHEAST, vSOUTHWEST, NORTHWEST. CardLayout布局管理器布局管理器n将每一个组件视为一张卡片,同一时刻只能显示一将每一个组件视为一张卡片,同一时刻只能显示一个组件。个组件。nsetLayout(new CardLayout() nCardLayout方法(按序指定组件)方法(按序指定组件)vfirst(Container parent) vlast(Container parent)vprevious(Container parent)vnext(Container parent)nCardLayout方法方法(按名显示组件)
27、按名显示组件)vaddLayoutComponent(String name, Component c)vshow(Container parent, String name)事件及处理机制事件及处理机制n用户操作用户操作GUI组件时会引发各种事件。组件时会引发各种事件。n事件事件 :描述:描述“发生了什么事情发生了什么事情”的对象。的对象。 系统根据用户的操作构造出相应事件类的对象。系统根据用户的操作构造出相应事件类的对象。n事件源:事件的产生地。事件源:事件的产生地。n事件处理程序:是一个方法,它接收一个事件对象事件处理程序:是一个方法,它接收一个事件对象,分析它,并完成对该事件的处理。,
28、分析它,并完成对该事件的处理。n每个事件有一个相应的监听者接口,它规定了能够每个事件有一个相应的监听者接口,它规定了能够接收(并处理)该类事件的方法的规范。接收(并处理)该类事件的方法的规范。n监听者:实现了监听者接口的类,它包含有事件处监听者:实现了监听者接口的类,它包含有事件处理程序。理程序。n编程人员要为事件源指定监听者对象(即指定处理编程人员要为事件源指定监听者对象(即指定处理某种事件的事件处理程序监听者对象方法)。某种事件的事件处理程序监听者对象方法)。鼠标单击按扭事件及处理机制事件及处理机制ActionEvent事件 引发public void actionPerformed(Ac
29、tionEvent e)ActionListener接口ActionEvent事件监听者类监听者对象调用按扭的 addActionListener ( )方法,为该按扭指定监听者。实现接口事件类事件类nActionEvent类类 :存放这个事件的细节。该类的方:存放这个事件的细节。该类的方法有:法有:vgetSource() 返回事件发生的对象(名)返回事件发生的对象(名)vgetActionCommand() 返回按扭名。返回按扭名。nActionListener 接口接口vpublic void actionPerformed(ActionEvent e)图形用户界面例图形用户界面例imp
30、ort java.awt.*;import java.awt.event.*;public class a public static void main(String args) MyFrame form1 = new MyFrame(); class MyFrame extends Frame MyFrame() super(窗口标题窗口标题); setSize(200,100); setFont(new Font(TimesRoman,Font.BOLD,20);图形用户界面例图形用户界面例 setLayout(new FlowLayout(); Button b = new Butto
31、n(close); add(b); b.addActionListener(new Bprocess(); setVisible(true); class Bprocess implements ActionListener public void actionPerformed(ActionEvent e) System.exit(0); 监听者类监听者类n某个类可以兼职也可以专职做这件事(实现监听者某个类可以兼职也可以专职做这件事(实现监听者接口)。接口)。n一个类若实现一个接口,必须实现接口的全部方法一个类若实现一个接口,必须实现接口的全部方法。 例如:例如:ActionListener
32、接口只有一个方法:接口只有一个方法: void actionPerformed(ActionEvent e) void actionPerformed(ActionEvent e) n实现接口的类可以是:实现接口的类可以是:v一般类一般类v内部类内部类v匿名类匿名类7-3 一般类7-4 内部类7-5 匿名类事件处理有关问题事件处理有关问题n有哪些事件类有哪些事件类 (java.awt.event) ? n每个事件类的监听者接口?每个事件类的监听者接口?n每个监听者接口规定的方法?每个监听者接口规定的方法?n多方法的监听者接口的适配器(实现接口的抽象类多方法的监听者接口的适配器(实现接口的抽象类
33、)是什么?)是什么?n组件的事件委托(注册)方法?组件的事件委托(注册)方法?窗口事件窗口事件(适配器说明)(适配器说明)n关闭窗口框时引发关闭窗口框时引发 WindowEvent事件事件n委托:委托: addWindowListener(new Wclose();n定义监听者类定义监听者类 class Wclose implements WindowListener public void windowClosing(WindowEvent e) System.exit(0); 其他方法其他方法 窗口事件窗口事件nWindowListener类有类有7 个方法,都必须实现。个方法,都必须实现
34、。v windowActivated(WindowEvent e) v windowClosed(WindowEvent e) v windowClosing(WindowEvent e) v windowDeactivated(WindowEvent e) v windowDeiconified(WindowEvent e) v windowIconified(WindowEvent e) v windowOpened(WindowEvent e) nWindowAdapter :系统实现的处理窗口事件的抽象适配器:系统实现的处理窗口事件的抽象适配器类,用空内容实现了类,用空内容实现了Win
35、dowListener接口的全部接口的全部7个方法个方法。nclass Wclose extends WindowAdapter 仅须编写需要的方法ActionEvent事件事件n引发原因:引发原因:v单击按扭,双击列表框中选项,选择菜单项,文本框中单击按扭,双击列表框中选项,选择菜单项,文本框中的回车的回车n事件监听接口:事件监听接口:ActionListenern接口方法:接口方法:vactionPerformed(ActionEvent e)n组件注册该事件方法:组件注册该事件方法:vaddActionListener(监听者对象)监听者对象) TextEvent事件事件n引发原因:引发
36、原因:v文本框或文本区域内容改变文本框或文本区域内容改变n事件监听接口:事件监听接口:TextListenern接口方法:接口方法:vtextValueChanged(TextEvent e)n组件注册该事件方法:组件注册该事件方法:vaddTextListener(监听者对象)监听者对象) ItemEvent事件事件n引发原因:引发原因:v改变列表框中的选中项改变列表框中的选中项v改变复选框选中状态改变复选框选中状态v改变下拉选单的选中项改变下拉选单的选中项n事件监听接口:事件监听接口:ItemListenern接口方法:接口方法:vitemStateChanged(ItemEvent e)
37、n组件注册该事件方法:组件注册该事件方法:vaddItemListener(监听者)监听者) AdjustmentEvent事件事件n引发原因:引发原因:v操作滚动条改变滑块位置操作滚动条改变滑块位置n事件监听接口:事件监听接口:AdjustmentListenern接口方法:接口方法:vadjustmentValueChanged(AdjustmentEvent e)n组件注册该事件方法:组件注册该事件方法:vaddAdjustmentListener(监听者)监听者) KeyEvent事件事件n引发原因:引发原因:v 敲完键(敲完键(KEY-TYPED)v 按下键按下键 (KEY-PRES
38、SED)v 释放键释放键 (KEY-RELEASE)n事件监听接口:事件监听接口:KeyListenern接口方法:接口方法:v keyPressed(KeyEvent e) 键已被按下时调用键已被按下时调用v keyReleased(KeyEvent e) 键已被释放时调用键已被释放时调用v keyTyped(KeyEvent e) 键已被敲完时调用键已被敲完时调用nKeyEvent方法:方法:char ch = e.getKeyChar(); n事件监听适配器(抽象类)事件监听适配器(抽象类)KeyAdaptern组件注册该事件方法:组件注册该事件方法:v addKeyListener(监
39、听者)监听者) MouseEvent事件事件n引发原因:引发原因: (鼠标作用在一个组件上)(鼠标作用在一个组件上)v鼠标事件:鼠标键按下,鼠标键抬起,单击鼠标鼠标事件:鼠标键按下,鼠标键抬起,单击鼠标 ,鼠标,鼠标光标进入一个组件,鼠标光标离开一个组件。光标进入一个组件,鼠标光标离开一个组件。v鼠标移动事件:鼠标移动,鼠标拖动鼠标移动事件:鼠标移动,鼠标拖动 n鼠标事件监听接口鼠标事件监听接口1:vMouseListener 接受鼠标事件接受鼠标事件n该接口定义的方法:该接口定义的方法:vmouseClicked(MouseEvent e) v mouseEntered(MouseEvent
40、 e) 鼠标光标进入一个组件鼠标光标进入一个组件vmouseExited(MouseEvent e) 鼠标光标离开一个组件鼠标光标离开一个组件n鼠标事件监听适配器(抽象类)鼠标事件监听适配器(抽象类)MouseAdapterMouseEvent事件(续)事件(续)n鼠标事件监听接口鼠标事件监听接口2:vMouseMotionListener 接受鼠标移动事件接受鼠标移动事件n该接口方法:该接口方法:vmouseMoved(MouseEvent e) 鼠标光标在组件上移动鼠标光标在组件上移动vmouseDragged(MouseEvent e)用鼠标拖动一个组件用鼠标拖动一个组件n鼠标移动事件监
41、听适配器鼠标移动事件监听适配器 MouseMotionAdaptern组件注册鼠标事件方法:组件注册鼠标事件方法:vadd MouseListener(监听者)监听者) n组件注册鼠标移动事件方法:组件注册鼠标移动事件方法:vadd MouseMotionListener(监听者)监听者) MouseEvent事件(续)事件(续)nMouseEvent方法方法ve.getClickCount() =1 单击单击 =2 双击双击vPoint e.getPoint() 取鼠标光标位置取鼠标光标位置vint e.getX() int e.getY() 取鼠标光标位置取鼠标光标位置ve.getModi
42、fiers() = e.BUTTON1_MASK 鼠标左键鼠标左键 = e.BUTTON3_MASK 鼠标右键鼠标右键7-6 鼠标事件WindowEvent事件事件n引发原因:引发原因:v有关窗口操作引发的事件有关窗口操作引发的事件n事件监听接口事件监听接口WindowListenern接口方法接口方法vwindowActivated(WindowEvent e) 激活窗口激活窗口vwindowClosed(WindowEvent e) 调用调用dispose方法关闭窗口后。方法关闭窗口后。vwindowClosing(WindowEvent e) 试图利用窗口关闭框关闭窗口试图利用窗口关闭框
43、关闭窗口vwindowDeactivated(WindowEvent e) 本窗口成为非活动窗口本窗口成为非活动窗口WindowEvent事件事件(续)续)vwindowDeiconified(WindowEvent e) 窗口从最小化恢复为普通窗口窗口从最小化恢复为普通窗口vwindowIconified(WindowEvent e) 窗口变为最小化图标窗口变为最小化图标vwindowOpened(WindowEvent e) 当窗口第一次打开成为可见时当窗口第一次打开成为可见时n接口适配器接口适配器 WindowAdaptern注册事件方法注册事件方法vaddWindowListenerF
44、ocusEvent事件事件n引发原因:引发原因:v组件获得焦点组件获得焦点v组件失去焦点组件失去焦点n事件监听接口事件监听接口 FocusListenern接口方法:接口方法:vfocusGained(FocusEvent e) 组件获得焦点时调用组件获得焦点时调用vfocusLost(FocusEvent e) 组件失去焦点时调用组件失去焦点时调用n接口适配器:接口适配器:FocusAdaptern组件注册该事件方法:组件注册该事件方法:addFocusListenerTextEvent事件事件n引发原因:引发原因:v当组件(如文本框)文本改变时引发当组件(如文本框)文本改变时引发n事件监听
45、接口:事件监听接口:TextListenern接口方法:接口方法:vtextValueChanged(TextEvent e)n组件注册该事件方法:组件注册该事件方法:vaddTextListenerComponentEvent 事件事件n引发原因:引发原因:v当组件移动、改变大小、改变可见性时引发当组件移动、改变大小、改变可见性时引发n事件监听接口:事件监听接口:ComponentListenern接口方法:接口方法:vcomponentHidden(ComponentEvent e) 组件隐藏组件隐藏vcomponentMoved(ComponentEvent e) 组件移动组件移动vco
46、mponentResized(ComponentEvent e)组件改变大小组件改变大小vcomponentShown(ComponentEvent e) 组件变为可见组件变为可见n接口适配器接口适配器 ComponentAdaptern组件注册该事件方法:组件注册该事件方法:vaddComponentListenerContainerEvent 事件事件n引发原因:引发原因:v当容器内增加或移走组件时引发当容器内增加或移走组件时引发n事件监听接口:事件监听接口:ContainerListenern接口方法接口方法vcomponentAdded(ContainerEvent e) 容器内加入组
47、件容器内加入组件vcomponentRemoved(ContainerEvent e) 从容器中移从容器中移走组件走组件n接口适配器接口适配器 ContainerAdaptern容器注册该事件方法:容器注册该事件方法:vaddContainerListener标准组件简介标准组件简介nLabel(标签标签)v构造函数构造函数Label a = new Label(“information”);Label a = new Label(“information”,Label.CENTER);v方法方法a.setText(“新内容新内容”); 设置标签内容设置标签内容String a.getText
48、() 读取标签内容读取标签内容nButton(按钮按钮)vButton myB = new Button(“Cancel”);Checkbox组件组件n构造函数构造函数vCheckbox(String label)vCheckbox(String label, boolean state)vCheckbox(String label, boolean state, CheckboxGroup group ) n方法:方法:vboolean getState()vsetState(boolean state)CheckboxGroup组件组件n将一组将一组CheckboxCheckbox 按扭组
49、成单选按扭组件。按扭组成单选按扭组件。n例例setLayout(new GridLayout(3, 1); setLayout(new GridLayout(3, 1); CheckboxGroup cbg = new CheckboxGroup();CheckboxGroup cbg = new CheckboxGroup();Checkbox ck1 = new Checkbox(Checkbox ck1 = new Checkbox(“oneone”, true, cbg );, true, cbg );Checkbox ck2 = new Checkbox(Checkbox ck2 =
50、 new Checkbox(“twotwo”, false, cbg );, false, cbg );Checkbox ck3 = new Checkbox(Checkbox ck3 = new Checkbox(“threethree”, false, cbg );, false, cbg );n方法:方法:vCheckbox getSelectedCheckbox()Checkbox getSelectedCheckbox()vsetSelectedCheckbox(CheckboxsetSelectedCheckbox(Checkbox box)box)TextField行编辑框组件行
51、编辑框组件n构造函数构造函数vTextField f1 = new TextField(30);vTextField f1 = new TextField(“abc”,30);v建建30个字符宽的行编辑框个字符宽的行编辑框n方法:方法:v String getText() 读文本框内容读文本框内容v setText(“abc”) 设置编辑框内容设置编辑框内容v setEchoChar(char c) 设置回显字符设置回显字符nTextComponent 方法:方法:vsetEditable(false); vselectAll() 7-7 计算器TextArea编辑框组件编辑框组件n构造函数构
52、造函数vTextArea ta1 = new TestArea(10,45); 建建10行、行、45列的文本区域列的文本区域vTextArea ta1 = new TestArea(“abc”,10,45);vTextArea ta1 = new TestArea(“abc”,10,45,滚动条,滚动条);n滚动条指定滚动条指定vSCROLLBARS_BOTH vSCROLLBARS_HORIZONTAL_ONLYvSCROLLBARS_VERTICAL_ONLYvSCROLLBARS_NONEn方法方法vappend(String str) 追加文本追加文本List 列表框列表框n首先创建首
53、先创建List对象,再调用对象,再调用add ()方法加入方法加入List列表列表的各选项的各选项n构造函数构造函数vList(int rows, boolean multipleMode) rows 显示行数显示行数 ; multipleMode 是否允许多选是否允许多选n方法:方法:vlist1.add (“class A”);vlist1.add (“class B”);vlist1.add (“class C” , 0); 指定加入选项位置指定加入选项位置List 列表框列表框n方法方法vint getSelectedIndex() 取被选项索引取被选项索引vint getSelect
54、edIndexes() 取被选项索引(多选)取被选项索引(多选)vString getSelectedItem() 取被选项取被选项vString getSelectedItems() 取被选项(多选)取被选项(多选)vvoid select(int index) 选中指定的项选中指定的项vString getItem(int index) 按索引号取出该项按索引号取出该项vint getItemCount() 取出项数取出项数vString getItems( ) 取出所有的项取出所有的项Choice下拉选单下拉选单例例 Choice ColorChooser = new Choice();
55、 Choice ColorChooser = new Choice(); ColorChooser.add(Green); ColorChooser.add(Green); ColorChooser.add(Red); ColorChooser.add(Red); ColorChooser.add(Blue); ColorChooser.add(Blue); String getSelectedItem() String getSelectedItem() GreenScrollbar 滚动条滚动条n构造函数构造函数mySlider = new Scrollbar(Scrollbar.HORI
56、ZONTAL , 0 , 1 , 0 , Integer.MAX_VALUE); v滚动条方向滚动条方向v滑块初始位置滑块初始位置v滑块尺寸滑块尺寸v滚动槽最小值滚动槽最小值v滚动槽最大值滚动槽最大值n方法方法vint getValue() 返回滑块当前位置返回滑块当前位置vsetUnitIncrement(1); 设置单位增量(点按两端箭头)设置单位增量(点按两端箭头)vsetBlockIncrement(50); 设置块增量(点按滚动槽)设置块增量(点按滚动槽)7-8 滚动条菜单菜单n创建菜单条(创建菜单条(MenuBar)MenuBar m_MenuBar = new MenuBar(); n创建菜单(创建菜单(Menu),加入菜单条),加入菜单条Menu menuFile = new Menu(“File”); /创建菜单创建菜单m_MenuBar.add(menuFile); /将菜单加入菜单条将菜单加入菜单条n创建菜单项(创建菜单项(MenuItem) 加入相应菜单加入相应菜单MenuItem f1 = new MenuItem(“Open”), /创建各菜单项创建各菜单项MenuItem f2 = new MenuItem(Close),menuFile.add(f1); /加入菜单加入菜单menuFile.ad
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 黑龙江双鸭山市(2024年-2025年小学六年级语文)部编版专题练习((上下)学期)试卷及答案
- 钢筋混凝土用660MPa级热轧带肋钢筋编制说明
- 2024新能源汽车销售合同3篇
- 2024水资源保护与开发利用合同
- 2024桥梁钢结构工程设计与施工合同模板3篇
- 2024年精密医疗器械定制研发合作合同版B版
- 2024某保险公司与投保人关于保险服务的合同
- 2024年铝板新材料研发与产业化合同3篇
- 2024年高品质抹灰工艺劳务分包合作协议3篇
- 2024年超高清视频内容制作版权转让合同
- 栋号长年度述职报告
- 无人机安全飞行承诺书
- 四川省成都市九县区2023-2024学年高一下学期期末调研考试化学试题(解析版)
- 《网页设计与制作案例实战教程》全套教学课件
- 产品创意设计学习通超星期末考试答案章节答案2024年
- 协议书范文离婚书范本模板
- 关于水浒传的题目单选题100道及答案解析
- DB3502T 078-2022 代建工作规程
- 【产业图谱】2024年山西省重点产业规划布局全景图谱(附各地区重点产业、产业体系布局、未来产业发展规划等)
- 消化性溃疡完整版本
- 人教版九年级化学电子版教材(全册)-课件资料
评论
0/150
提交评论