Java软件设计基础_第1页
Java软件设计基础_第2页
Java软件设计基础_第3页
Java软件设计基础_第4页
Java软件设计基础_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.组件概述GUI:GraphicsUserInterface设计和实现GUI的主要难点创建组成界面的各成分和元素,指定它们的属性和位置关系,根据具体需要布局排列,从而构成完整的GUI的外观表象;在GUI程序中,代码所执行的路线及顺序都是很不确定的。在GUI程序中,用户可以点击任意按键并和屏幕上的其他任何部分进行交互及信息传递——即事件驱动。Java提供了大量支持GUI设计的类。AWT(AbstractWindowTookit)包Button、Label、TextField、CheckBox…Swing包JButton、JLabel、JTextField、JCheckBox…Swing和AWT对Java运行的每一个平台,AWT的组件自动的通过它们各自的代理映射成特定平台的组件,这些代理称为同位体(peer)。AWT组件的设计原理是把与显示组件有关的许多工作和处理组件事件的工作交给相应的本地组件,因此非常依赖底层平台;AWT适用于开发简单的GUI,但不适于开发复杂的GUI项目。随着Java2的发行,AWT的用户界面组件被更稳定、通用和灵活的Swing组件库取代。大多数Swing组件由Java代码绘制在画布上,更少的依赖目标机器上的底层平台。不依赖本地GUI的Swing组件称为轻组件——Lightweightcomponent;

AWT组件称为重组件——Heavyweightcomponent。Swing外观与Windows外观JavaGUIAPI层次结构GUI类容器类(Container)用来包含其他组件;Window、Panel、Applet、Frame和Dialog都是AWT组件的容器类;Conponent、Container、JFrame、JDialog、JApplet和JPanel都是Swing的容器类。其中:Container用来组织组件;JFrame是不能包含在另一个窗口内的窗口;JDialog是一个弹出式窗口或消息框;JApplet是Applet的一个子类;JPanel是一个存放用户界面组件的不可见的容器,可以嵌套。组件类(Component)组件是一个可以以图形化方式显示于屏幕上与用户进行交互的对象。按钮、菜单、标签、文本域、复选框……辅助类辅助类都不是Component的子类,它们用来描述GUI组件的属性,例如颜色、字体、大小等。Graphics类是一个抽象类,提供一个图形环境,用于绘制字符串、直线和简单几何图形;Color类用来处理GUI组件的颜色;Font类指定GUI组件上文本和图形的字体;FontMetrics是用于获取字体属性的抽象类;Dimension将组件的宽度和高度(精度为整数)封装在单个对象中;LayoutManager是一个接口,指定组件在容器中的摆放方式。辅助类包含在AWT包中。Swing组件不能取代AWT的全部类,只能替代AWT的GUI组件类;AWT的辅助类保持不变。2.AWT图形化界面基础GUI设计的简要流程引入java.awt包或javax.swing包;利用包中提供的组件类来定义某种组件;定义一个放置组件的容器;对容器进行布局管理,将此组件添加到该容器中;为了让该组件响应某个事件,还要注册组件对应的事件监听器并实现相应的监听器接口。Frame/JFrame——框架简介框架是Windows类的子类,它是窗口的一种,是顶级窗口。Frame组件在Java的顶层窗口中可以独立使用。包含标题、边框等。当Frame被关闭后,将产生WindowEvent事件。Frame无法直接监听键盘输入事件。构造方法:建立一个没有标题的新Frame对象:建立一个以title为标题的Frame对象:主要方法:Frame()Frame(Stringtitle)setSize(intwidth,intheight)设置长宽setBackground(colorc)设置背景色setVisible(booleanb)设置是否可见StringgetTitle()获取标题setTitle(Stringtitle)设置标题为titlebooleanisResizable()测试是否可以改变大小ImagegetIconImage()获取最小化图标setIconImage(Imageimg)设置最小化图标setBounds(intx,inty,intwidth,intheight)设置大小和位置示例:Panel——面板简介:是Container类的子类,也是容器,可容纳其他组件。面板不是顶级窗口,不能独立存在,必须将它添加到其他容器中。创建一个Panel对象后需将该对象放入Window和Frame中才可使Panel中的内容可见。构造方法:建立一个默认布局的新Panel对象:建立一个布局为layout的Panel对象:Panel()Panel(LayoutManagerlayout)示例Button——按钮简介是Java程序GUI设计中最常用的一个组件,是可以提供用户快速启动某一动作的类。按钮本身不显示信息,它一般对应一个事先定义好的功能操作,并对应一段程序。当用户点击按钮时,系统自动执行与该按钮相联系的程序,从而完成预先指定的功能。构造方法构造一个没有标题的按钮:构造一个标题为str的按钮:Button()Button(Stringstr)主要方法示例StringgetLabel()返回按钮的标题setLabel(Strings)设置按钮的标题为sgetActionCommand()返回所引用的Button对象产生的动作事件关联的命令名称setActionCommand(Stringc)设置所引用的Button对象产生的动作事件关联的命令名称Label——标签简介是一种用来显示说明性的静态文本的组件,它起到信息说明的作用。标签是用户只能查看而不能简单的修改其内容的文本显示区域,但用户可以在应用程序中通过调用Label提供的方法更换文本的内容。构造方法创建一个没有名字的标签对象创建一个名字为str的标签对象创建一个名字为str的标签对象,对齐方式为align其中Label.LEFT、Label.RIGHT、Label.CENTER分别为居左、居右、居中。Label()Label(Stringstr)Label(Stringstr,intalign)主要方法示例StringgetText()返回Label对象文本的StringsetText(Strings)设置Label对象的文字setAlignment(intalign)设置Label对象的对齐方式TextField——文本框和TextArea——文本域它们都是TextComponent的子类,用于文本处理。TextField文本框是单行文本输入域,多用于单行显示。当按下回车键时,会发生事件(ActionEvent),可以通过ActionListener中的actionPerformed方法对事件进行处理。构造方法创建一个初始文本串为空的文本框对象创建一个初始文本串为str的文本框对象创建一个初始文本串为str、列数为column长度的文本框对象TextField()TextField(Stringstr)TextField(Stringstr,intcolumn)主要方法TextArea是多行文本组件,用于显示程序中的多行文本信息。构造方法创建一个初始文本串为str的文本域对象创建numLines行、numChars列的文本域对象创建一个初始文本串为str、numLines行、numChars列的文本域对象setText(Strings)将文本框对象的文本信息设置为strgetText()返回文本框对象的文本信息getSelectedText()返回文本框对象被选的文本串信息内容setEchoChar(charch)将文本框对象的回显字符设为ch,常用于密码接收场合TextArea(Stringstr)TextArea(intnumLines,intnumChars)TextArea(Stringstr,intnumLines,intnumChars)主要方法示例:setText(Strings)将文本域对象的文本信息设置为strgetText()返回文本域对象的文本信息复选框与单选按钮简介复选框又称为检测盒,用Checkbox类的对象表示,Checkbox由一个方形的选择区和一个标签组成,有选中(check)和未选中(uncheck)两种状态。单独的Checkbox实现的是复选框功能,当多个Checkbox加入到一个CheckboxGroup组件内时,选择区变成圆形,组件内的Checkbox只能有一个被选中,此时实现的是单选按钮的功能。复选框和单选框使用ItemListener来监听ItemEvent事件。构造方法创建一个标签为str的复选框创建一个标签为str的单选按钮,g指明所属的CheckboxGroupCheckbox(Stringstr)Checkbox(Stringstr,CheckboxGroupg,booleanstate)主要方法getState()返回Checkbox对象的状态是否被选中setStateChange()获取Checkbox对象的当前状态setState(booleanstate)设置Checkbox对象的状态Choice——下拉列表简介提供一个弹出式的菜单让用户选择,也是“多选一”的输入界面。与单选按钮组利用单选按钮把所有选项列出的方法不同,下拉列表的所有选项被折叠起来,在这个菜单折叠时只显示最前面的或是用户选定的那一项。下拉列表节省显示空间,适用于大量选项的情形。Choice用ItemListener接口来监听。构造方法创建一个空白的下拉列表Choice()主要方法List——列表简介把所有供用户选择的项都显示出来以供选择。列表可以实现多选,支持滚动条,可以同时浏览多项。列表可以产生两种事件:addItem(Stringitem)添加一个item字符串到Choice对象中add(Stringitem)将新选项item加载当前下拉列表的最后getSelectedIndex()返回被选中的选项的序号(0~n-1)getItem(intindex)返回Choice对象index索引项目的字符串getSelectedItem()返回Choice对象所选项目的字符串removeAll()把下拉列表中的选项全部移除remove(Stringitem)把指定标签文本的选项移除当用户单击列表中的某一个选项并选中它时,将产生ItemEvent类的选择事件;当用户双击列表中的某一个选项时,将产生ActionEvent类的动作事件。构造方法建立行数为rows的List对象,参数b为真时允许多选主要方法List(introws,booleanb)getSelectedItem()返回List对象所选项目的字符串组成的字符串数组getSelectedIndex()返回被选中的选项的序号(0~n-1)组成的整数数组addItem(Stringitem,intindex)添加一个item字符串到List对象的索引index处delItem(intindex)删除List对象index处的选项add(Stringitem)将新选项item加载当前列表的最后remove(Stringitem)把指定标签文本的选项移除示例Dialog——对话框简介对话框与框架类似,是有边框、有标题而独立存在的容器。通常起到与用户交互的对话窗口的作用。对话框不能作为程序的最外层容器,也不能包含菜单栏,它必须隶属于某个框架并由该框架负责弹出。对话框可以被设置为模式窗口,其特点是总是在激活窗口的最前面,即若是不关闭,则不能对其他窗口进行操作。构造方法创建没有标题的对话框,Owner表示所有者创建有指定标题title的对话框创建指定标题的对话框并指明是否为模式窗口Dialog(FrameOwner)Dialog(FrameOwner,Stringtitle)Dialog(FrameOwner,Stringtitle,booleanmodel)主要方法示例setTitle(Stringtitle)将对话框对象的标题设置为titlegetTitle()返回对话框对象的标题setVisible(booleanf)设置对话框对象的标题是否显示setModel(booleanf)设置对话框模式是否为模式窗口Canvas——画布画布代表屏幕上一块空白的矩形区域,它不是容器,而是一个可以在这里绘画、捕捉用户操作、产生相应事件的区域。3.事件处理机制事件处理基础事件及其处理机制GUI的两大任务创建窗口并在窗口中添加各种组件,规划组件在窗口中的位置和相关属性,构成GUI的外观效果;设置各类组件对不同事件的响应,从而执行用户在用户界面所实施的交互行为,如果用户在用户界面执行了一个动作,这将导致一个事件的发生。事件是描述用户所执行的一个操作、所产生的一个行为,主要涉及以下三个概念:事件(Event):用来描述在用户界面的用户交互行为所产生的一种效果;事件源(EventSource):产生事件的组件对象;事件处理方法(EventHandler):负责解析处理事件的类对象,用以实现和用户交互的方法。事件的类层次事件处理方法主要基于“事件授权模型”(EDM:EventDelegationModel)的处理机制,实现定义多种事件类型。事件源拥有自己的方法,通过它可以向其注册事件监听器。事件监听器是一个实例,当事件源产生一个事件后,事件源就会通知相应的事件监听器,根据事件对象内封装的消息决定如何响应该事件。一个事件源可以注册一个或多个监听器,一个监听器也可以被注册到多个事件源。事件的接口及方法ActionEvent行为:点击按钮、文本框、列表及选择菜单等接口名:ActionListener注册方法:监听器接口所提供的事件方法:ItemEvent行为:点击复选框选择框列表及带复选框的菜单项等接口名:ItemListener注册方法:监听器接口所提供的事件方法KeyEvent行为:按下或释放键盘addActionListener(ActionListenerListener)actionPerformed(ActionEvente)addItemListener(ItemListenerListener)itemStateChanged(ItemEvente)接口名:KeyListener注册方法:监听器接口所提供的事件方法MouseEvent行为:鼠标单击或鼠标移动接口名:鼠标单击:MouseListener鼠标移动:MouseMotionListener注册方法:鼠标单击:鼠标移动:addKeyListener(KeyListenerListener)keyPressed(KeyEvente)keyReleased(KeyEvente)keyTyped(KeyEvente)getModified()addMouseListener(MouseListenerListener)addMouseMotionListener(MouseMotionListenerListener)监听器接口所提供的事件方法:鼠标单击鼠标移动WindowEvent行为:激活、打开、关闭窗口或窗口失去焦点及收到窗口级事件接口名:WindowListener注册方法:mousePressed(MouseEvente)mouseReleased(MouseEvente)mouseEntered(MouseEvente)mouseExited(MouseEvente)mouseClicked(MouseEvente)mouseMoved(MouseEvente)mouseDragged(MouseEvente)addWindowListener(WindowListenerListener)监听器接口所提供的事件方法:TextEvent行为:文本框、文本域发生改变接口名:TextListener注册方法:监听器接口所提供的事件方法:windowClosing(WindowEvente)windowClosed(WindowEvente)windowOpened(WindowEvente)windowIconified(WindowEvente)windowDeiconified(WindowEvente)windowActivated(WindowEvente)windowDeactivated(WindowEvente)addTextListener(TextListenerListener)textValueChanged(TextEvente)FocusEvent行为:组件获得或失去焦点接口名:FocusListener注册方法:监听器接口所提供的事件方法:ComponentEvent行为:移动、隐藏、显示组件和改变组件大小等。接口名:ComponentListener注册方法:监听器接口所提供的事件方法:addComponentListener(监听者)ComponentMoved(ComponentEvente)ComponentHidden(ComponentEvente)ComponentResized(ComponentEvente)ComponentShown(ComponentEvente)addFocusListener(FocusListenerListener)FocusGained(FocusEvente)FocusLost(FocusEvente)ContainerEvent行为:添加、移动组件等接口名:ContainerListener注册方法:监听器接口所提供的事件方法:AdjustmentEvent行为:调节滚动条或滑块等接口名:AdjustmentListener注册方法:监听器接口所提供的事件方法:addContainerListener(监听者)ContainerAdded(ContainerEvente)ContainerRemoved(ContainerEvente)addAdjustmentListener(监听者)AdjustmentValueChange(AdjustmentEvente)Java针对大多数事件监听器接口定义了相应的实现类来实现接口中的所有方法。事件处理主要步骤步骤:选择组件作为事件源,不同类型的组件会产生特定类型的事件,假设该事件类型为XXXEvent;定义要接收并处理某种类型的事件,注册相应的事件监听器类,通过调用组件方法向组件注册事件监听器。实现XXXListener类的实例对象,据此可作为事件的监听器对象。监听器的注册与注销如下:eventsourceObject.addXXXListener(XXXListenerListener);publicvoidaddXXXListener(XXXListenerlistener);publicvoidremoveXXXListener(XXXListenerlistener);事件源通过实例化事件类激发并产生事件,事件将被传送给已注册的一个或多个监听器。监听器在接收到激发事件信号后负责实现相应的事件处理方法。以按钮组件作为事件源的简单范例选择按钮组件作为事件源:定义要接受并处理的事件ActionEvent,通过下面的语句注册事件监听器:按下按钮组件bton对象会产生一个ActionEvent实例对象,事件源通过实例化事件类激发事件并传送给已注册的监听器;监听器对象listener所属的类MyActionListener需通过方法actionPerformed实现相应的接口以响应事件:键盘事件KeyEvent类在java.awt.event包中,提供的主要方法:getKeyChar():判断被按下的键的字符;getKeyCode():判断哪个键被按下、点击或释放并获取其键码值。Java语言的部分键码表键码键键码键VK_CANCEL/CLEAR/COMMA取消/清除/逗号VK_F1~VK_F2F1~F12VK_UNMPAD0~VK_UNMPAD9小键盘0~9VK_0~VK_90~9VK_LEFT/RIGHT/UP/DOWN左右上下键VK_A~VK_Za~zVK_KP_LEFT/RIGHT/UP/DOWN小键盘左右上下键VK_HOME/ENDHOME/ENDVK_BACK_SLASH/QUOTE“\”/单引号VK_CAPS_LOCK大写锁定VK_ALT/CONTROL/SHIFT/ESCAPEAlt/Ctrl/Shift/EscVK_NUM_LOCK数字锁定VK_SEMICOLON/PERIOD/SLASH分号/点/“/”VK_SPACE/TAB空格/制表符VK_OPEN/CLOSE_BRACKET[/]VK_QUOTE单引号VK_INSERT/DELETE/ENTER/PAUSE插入/删除/回车/暂停VK_PAGE_UP/DOWN前后翻页简单键盘事件的使用组件使用addKeyListener()方法获得监视器。监视器是一个对象,创建该对象的类必然通过以下三种方法来实现接口:publicvoidkeyPressed(KeyEvente);按下键盘上的某个键publicvoidkeyTyped(KeyEvente);当键被按下又释放publicvoidKeyReleased(KeyEvente);释放键盘上的某个键示例:将键盘输入字符的键码、名称和按键显示出来。设置用来显示的面板:注册键盘事件监听器允许面板获得焦点对键盘事件进行响应(即实现接口方法)键盘释放时重绘窗口:将KeyPanel实例加入到容器中:复合键盘事件的使用KeyEvent类对象可调用getModifiers()方法返回以下整数值:CTRL_MASKALT_MASKSHIFT_MASK以上是InputEvent类的类常量,根据返回值对复合键事件做处理。当使用Ctrl+C复合键时,下面的逻辑表达式为真:示例:利用对组合键事件的响应来处理复制、剪切与粘贴对复制、剪切、粘贴的处理窗口组件安放:文本事件TextArea或TextField信息发生改变时会触发TextEvent事件。需要在程序中将TextEvent事件注册给监听器TextListener,并实现TextListener接口中的textValueChanged方法。示例:改变TextArea中的文字,并在标签中回显安放组件,并注册监听器:响应文本事件(即实现接口方法)鼠标事件MouseListener触发鼠标事件的四种操作:鼠标指针进入组件或退出组件mouseEntered(MouseEvente)mouseExited(MouseEvente)鼠标指针停留在组件上时按下鼠标mousePressed(MouseEvente)鼠标指针停留在组件上时释放鼠标mouseReleased(MouseEvente)鼠标指针停留在组件上时单击或连续单击鼠标mouseClicked(MouseEvente)MouseMotionListener触发鼠标事件的两种操作:在组件上拖动鼠标指针mouseDragged(MouseEvente)在组件上运动鼠标指针mouseMoved(MouseEvente)由于处理鼠标事件的接口中的方法较多,Java提供了相应的适配器类MouseAdapter和MouseMotionAdapter,据此分别实现了MouseListener接口和MouseMotionListener。获取鼠标的具体信息的方法:getX()返回鼠标事件发生时坐标点的x值getY()返回鼠标事件发生时坐标点的y值getSource()返回触发当前鼠标事件的事件源getPointer()返回鼠标事件发生时的坐标点(Point类型)getClickCount()返回鼠标被连续点击的次数getModifiers()如果是鼠标左键触发,则返回值为BUTTON1_MASK;如果是鼠标右键触发,则返回值为BUTTON3_MASK,以上两个整数值都是In

温馨提示

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

评论

0/150

提交评论