您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > Java程序设计语言GUI
ITEducation&TrainingDate:18June2008Java程序设计语言SL-275(四)ITEducation&TrainingDate:18June2008今天的议题•建立JavaGUI•GUI事件处理•基于GUI的应用程序ITEducation&TrainingDate:18June2008第10章建立JavaGUIITEducation&TrainingDate:18June2008本章概述•本章内容包括GUI的建立和布局。本章介绍AWT,它是建立GUI时需要使用的类包。ITEducation&TrainingDate:18June2008抽象窗口工具包(AWT)•提供图形界面(GUI)组件,这些组件可用于所有javaapplet和应用程序•包含可扩展的类和可继承的属性;这些类也可以是抽象类•确保每个在屏幕上显示的GUI组件都是抽象类Component或MenuComponent的一个子类•有Component的一个抽象子类Container,它有两个子类:Panel和WindowITEducation&TrainingDate:18June2008java.awt包•java.awt包内含有生成GUI组件的类。ITEducation&TrainingDate:18June2008容器•使用add()方法添加组件。•有两种主要类型的容器:Window和Panel。•在显示屏上,Window是独立的浮动窗口。Window有两种重要的类型:Frame和Dialog。ITEducation&TrainingDate:18June2008容器•Frame是一个有标题的窗口,其边角可以调节大小。•Dialog是一个简单的窗口,不能有菜单栏;Dialog窗口可以移动,但大小不能调整。•Panel是GUI组件的一种容器,它必须包含在其他容器之中,如Window或Applet。•Panel代表一个矩形区域,在该区域中可以放入其他组件。要显示Panel必须将其放在一个Window(或Window的子类)中。ITEducation&TrainingDate:18June2008确定组件位置•容器中组件的位置和大小由布局管理器来确定。•通过禁用布局管理器(setLayout(null))可以控制组件的大小或位置。必须对组件使用setLocation()、setSize()或setBounds()方法,使它们在容器中定位。ITEducation&TrainingDate:18June2008Frame•是Window的子类•有标题和缩放角•初始不可见,用setVisible(true)方法使其可见•默认布局管理器是BorderLayout•使用setLayout方法可以改变默认布局管理器ITEducation&TrainingDate:18June2008示例程序FrameExample•应用程序FrameExample创建了一个Frame,该Frame有指定的标题、大小和背景颜色。ITEducation&TrainingDate:18June2008Panel•为组件提供空间•允许子面板拥有它们自己的布局管理器•示例程序:FrameWithPanel,创建一个黄色的小Panel,并且把它添加到一个Frame中。ITEducation&TrainingDate:18June2008容器布局•在容器里组件的布局通常由布局管理器管理。•每个容器(如Panel或Frame)都有一个默认的布局管理器与之关联,可通过调用setLayout来改变默认管理器。•布局管理器负责确定其容器中每个子组件的大小和布局策略。ITEducation&TrainingDate:18June2008布局管理器¾Java编程语言包含的布局管理器:•FlowLayout-流式布局•BorderLayout-边界布局•GridLayout-网格布局•CardLayout-卡片布局•GridBagLayout-网袋布局ITEducation&TrainingDate:18June2008默认布局管理器ITEducation&TrainingDate:18June2008一个简单的FlowLayout示例•示例程序LayoutExample.java,采用FlowLayout进行窗体布局。ITEducation&TrainingDate:18June2008FlowLayout管理器•Panel类的默认布局管理器•组件添加按从左到右的顺序•默认居中排列方式•使用组件自己期望的大小•使用构造器来调整大小ITEducation&TrainingDate:18June2008FlowLayout管理器示例•示例程序FlowExample.java,向一个Frame上的flow布局添加几个按钮。用户或程序调整大小之后ITEducation&TrainingDate:18June2008BorderLayout管理器¾Frame类的默认布局管理器¾组件添加到特定区域¾调整大小:•North、South和Center区域水平调整•East、West和Center区域垂直调整ITEducation&TrainingDate:18June2008BorderLayout管理器示例•示例程序BorderExample.java,向一个使用BorderLayout布局的Frame添加几个按钮。调整窗口大小之后ITEducation&TrainingDate:18June2008GridLayout管理器•组件按从左到右,从上到下的顺序添加•所有区域大小相等•其构造器指定行数和列数•示例程序GridExample.java调整窗口大小之后ITEducation&TrainingDate:18June2008创建Panel和复杂布局•示例程序ComplexLayoutExample.java,使用一个Panel,使得在一个边界布局的NORTH区域中可以放置两个按钮,这种嵌套是复杂布局的基础。调整窗口大小之后ITEducation&TrainingDate:18June2008用AWT绘图•可以绘制任一Component(而AWT为此提供了Canvas类和Panel类)•特别的是,可以创建Canvas或Panel的子类,覆盖paint方法。•每次组件显示都调用paint方法(例如,移开一个重叠在组件上的窗口)。•每个组件都有一个Graphics对象。•Graphics类实现了许多绘图方法。ITEducation&TrainingDate:18June2008用AWT绘图•示例程序TestDrawingPanel.java,显示一个面板,上面绘有各种形状,图形下方是该绘图方法的名称。•相关程序文件DrawingPanel.javaITEducation&TrainingDate:18June2008练习1:创建ChartClientGUI第一部分•练习目标:本练习中,将为一个“聊天室”应用程序创建一个GUI。将使用一个复杂布局,在一个框架中正确放置几个GUI组件。•任务:详见mod10_gui\exercise1\exercise1.docITEducation&TrainingDate:18June2008第11章GUI事件处理ITEducation&TrainingDate:18June2008本章概述•仅在框架中创建GUI组件的布局是不够的。必须编写代码来处理发生的事件,例如单击按钮或键入字符。本章将说明如何编写GUI事件处理程序。ITEducation&TrainingDate:18June2008事件是什么?•事件——描述发生情况的对象•事件源——事件的发生器•事件处理器——一个方法,该方法接收一个事件对象,对其进行解释并处理用户的交互操作ITEducation&TrainingDate:18June2008示例程序TestButton•示例程序TestButton.java和ButtonHandler.java,有关带有一个Button的简单Frame。点击按钮输出结果ITEducation&TrainingDate:18June2008委托模型¾用户对象(处理器)使用它们想监听的GUI组件进行注册。¾GUI组件只能触发已发生的事件类型处理器。•大多数组件能够触发一个以上的事件类型。¾在多个类间分布工作。ITEducation&TrainingDate:18June2008事件类型ITEducation&TrainingDate:18June2008分类方法和接口ITEducation&TrainingDate:18June2008复杂示例•示例程序TwoListener.java为更为复杂的Java代码软件示例。当按下鼠标键(鼠标拖动)时,跟踪鼠标运动。甚至当鼠标键未按下时(鼠标移动),该示例也检测鼠标的运动。鼠标进入鼠标拖动鼠标移开ITEducation&TrainingDate:18June2008多个监听器•多个监听器促使程序的多个无关的部分可以响应同一个事件。•当事件发生时,将调用所有已注册的监听器的处理器。ITEducation&TrainingDate:18June2008事件适配器•定义的监听器类能扩展适配器类并只覆盖需要的方法。•示例:ITEducation&TrainingDate:18June2008用内部类处理事件•可用内部类实现事件处理器,允许对外部类的私有数据进行访问。•示例程序:TestInner.javaITEducation&TrainingDate:18June2008用匿名类处理事件•在表达式范围内可包括完整的类定义。这种定义称为匿名的内部类,并且立即被实例化。匿名内部类通常在处理AWT事件时使用。•示例程序:TestAnonymous.javaITEducation&TrainingDate:18June2008练习1:建立ChartClientGUI第二部分•练习目标:在本练习里,将为“聊天室”GUI实现基本事件处理器。•任务:详见mod11_events\exercise1\exercise1.docITEducation&TrainingDate:18June2008第12章基于GUI的应用程序ITEducation&TrainingDate:18June2008本章概述•本章基本涵盖了典型的关于使用GUI构造应用程序的内容。ITEducation&TrainingDate:18June2008AWT组件ITEducation&TrainingDate:18June2008组件事件ITEducation&TrainingDate:18June2008如何创建菜单1.创建MenuBar对象,并加到菜单容器中,如Frame。2.创建一个或多个Menu对象,并加到菜单条对象中。3.创建一个或多个MenuItem对象,并加到菜单对象中。ITEducation&TrainingDate:18June2008创建MenuBar•MenuBar组件是个水平菜单,只能将它添加到Frame对象,并且它形成了所有菜单树的根。•Frame每次显示一个MenuBar。•示例程序:SampleMenu1.java。ITEducation&TrainingDate:18June2008创建Menu•Menu组件提供了一个基本的下拉菜单。可以将它加到MenuBar或其他的Menu。•示例程序:SampleMenu2.java。ITEducation&TrainingDate:18June2008创建MenuItem•MenuItem组件是菜单树的文本叶节点,将它们添加到菜单上形成菜单树。•示例程序:SampleMenu3.java。ITEducation&TrainingDate:18June2008创建CheckboxMenuItem•CheckboxMenuItem是一个可复选的菜单项,因此可在菜单上选择(“开”或“关”)。•示例程序:Sam
本文标题:Java程序设计语言GUI
链接地址:https://www.777doc.com/doc-5354918 .html