1、Java2SE基础培训课件-PPT精品文档目录 1:J2SE介绍 2:AWT介绍 3:Swing介绍 4:Applet介绍 5:web start介绍 6:demo 分析J2SE介绍 Java2平台包括:标准版(J2SE)、企业版(J2EE)和微缩版(J2ME)三个版本。J2SE,J2ME和J2EE,这也就是SunONE(Open NetEnvironment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入式系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。Standard Edi
2、tion(标准版)J2SE 包含那些构成Java语言核心的类。比如:数据库连接、接口定义、输入/输出、网络编程 ,可以这样理解:J2SE是基础;压缩一点,再增加一些CLDC等方面的特性就是J2ME;扩充一点,再增加一些EJB等企业应用方面的特性就是J2EE。AWT AWT介绍对一个好的应用程序来说,良好的图形用户接口(GUI,Graphic User Interface)是必不可少的。缺少良好的图形用户接口,将会给用户理解和使用应用程序带来很多不便。当Java在2019年第一次发布的时候,它包含了一个叫做AWT(Abstract Windowing Toolkit)的库,用来构建图形用户界面应
3、用程序。AWT使用AWT开发GUI程序需要4个步骤。选择一个合适的容器(Container)。确定一种布局管理器(Layout Manager)。添加各种组件(Component)。进行事件处理(Event Handling)。总之:我们可以打个家居设计的比喻。首先要选择一套房屋,这里相当于AWT的容器概念。然后要对房屋进行整体布局设计,比如一共需要几个房间,每个房间的大小和尺寸等,这里相当于AWT的布局管理器概念。整体布局规划好之后,我们开始布置每个房间,将各种家具或电器设备(相当于AWT的组件)安放在合适的位置。最后是确保家具或电器能够正常工作,例如,当使用电视机遥控调节音量时,电视机会正
4、常做出反应,这里相当于AWT组件的事件处理。AWTAWT容器:外部容器和内部容器。其中,外部容器一般会独立存在,例如Frame类;而内部容器则会嵌套在外部容器内部使用,例如Panel类。其中两个最常用的容器是Frame和Panel。在后面我们还要单独介绍Applet(一种特殊的Panel)。框架(Frame):Frame是顶级窗口,可以显示标题,重置大小。面板(Panel):面板提供了建立应用程序的空间。我们可以把图形元件(包括其他面板)放在一个面板上,然后把这个面板作为内部容器放在Frame等外部容器上。AWT布局管理 选择了容器之后,可以通过容器的setLayout()和getLayout
5、()方法来确定布局(Layout),也就是限制容器中各个组件的位置和大小等。Java提供了多种布局:例如:顺序布局(顺序布局(Flow Layout):是Panel和Applet的默认布局管理器。使用F1owLayout进行布局,在大小不变的容器中,构件的放置规律是从上到下、从左到右依次放置;当容器大小不变时,构建变化规律:大小不变位置变化。边界布局(边界布局(Border Layout):是Window、Frame和Dialog的默认布局管理器。布局策略是根据(North)、南(South)、东(East)和西(West)方向安排构件,余下的就是中心(Center);变化策略是构件之间相对位
6、置不变,但是大小改变。网格布局(网格布局(Grid Layout):用于指定放置构件的矩形网格,网格中每个单元的大小相同,平均分配容器空间。布局策略是,初次创建时必须指定网格的行数和列数,再按照从上到下、从左到右的顺序安排构件;变化策略是容器大小变化时,网格中的构件仍然平均分配容器的空间。CardLayout:CardLayout布局管理器能够实现将多个组件放在同一个容器区域内的交替显示,相当于多张卡片在叠一起,在任何时候都只能看到最上面的一个。package sample;import java.awt.*;import java.awt.event.WindowAdapter;import
7、 java.awt.event.WindowEvent;public class MyFlowLayout private Frame f;private Button button1,button2,button3;public static void main(String args)MyFlowLayout mflow=new MyFlowLayout();mflow.go();public void go()f=new Frame(FlowLayout演示);f.addWindowListener(new WindowAdapter()public void windowClosing
8、(WindowEvent evt)f.setVisible(false);f.dispose();System.exit(0););f.setLayout(new FlowLayout(FlowLayout.LEADING,20,20);button1=new Button(确定);button2=new Button(打开);button3=new Button(关闭);f.add(button1);f.add(button2);f.add(button3);f.setSize(200,200);f.pack();/调整窗口的大小 f.setVisible(true);/图像可见性 AWT
9、Component1按钮(按钮(Button)按钮是最常用的一个组件,其构造方法如下:按钮是最常用的一个组件,其构造方法如下:Button b=new Button(Quit);当按钮被点击后,会产生当按钮被点击后,会产生ActionEvent事件,由事件,由ActionListener接接口进行监听和处理事件。口进行监听和处理事件。ActionEvent的对象调用的对象调用getActionCommand()方法可以得到按钮方法可以得到按钮的标识名,默认按钮名为的标识名,默认按钮名为label。用。用setActionCommand()可以为按可以为按钮设置组件标识符钮设置组件标识符AWT2
10、标签标签标签是一种放到面板上的静止的正文。其构造方法如下:Label label1=new Label(你好!)下面是一个标签的例子。import java.awt.*;import java.applet.Applet;public class LabelTest extends Applet public void init()setLayout(new FlowLayout(FlowLayout.CENTER,10,10);Label label1=new Label(你好!);Label label2=new Label(欢迎!);add(label1);add(label2);AWT
11、AWT事件处理基本概念事件处理基本概念上面我们讲解了如何放置各种组件,使图形界面更加丰富多彩,但是还不能响应用户的任何操作。若使图形界面能够接收用户的操作,我们就必须给各个组件加上事件处理机制。在事件处理的过程中,主要涉及3类对象。Event(事件):用户对组件的一个操作,称之为一个事件,以类的形式出现,例如,键盘操作对应的事件类是KeyEvent。Event Source(事件源):事件发生的场所,通常就是各个组件,例如按钮Button。Event Handler(事件处理者):接收事件对象并对其进行处理的对象事件处理器,通常就是某个Java类中负责处理事件的成员方法。例如,如果用户用鼠标单
12、击了按钮对象button,则该按钮button就是事件源,而Java运行时系统会生成ActionEvent类的对象actionEvent,该对象中描述了单击事件发生时的一些信息。然后,事件处理者对象将接收由Java运行时系统传递过来的事件对象actionEvent,并进行相应的处理AWT由于同一个事件源上可能发生多种事件,因此,Java采取了授权模型(Delegation Model),事件源可以把在其自身所有可能发生的事件分别授权给不同的事件处理者来处理。比如,在Canvas对象上既可能发生鼠标事件,也可能发生键盘事件,该Canvas对象就可以授权给事件处理者1来处理鼠标事件,同时授权给事件
13、处理者2来处理键盘事件。有时也将事件处理者称为监听器,主要原因也在于监听器时刻监听着事件源上所有发生的事件类型,一旦该事件类型与自己所负责处理的事件类型一致,就马上进行处理。授权模型把事件的处理委托给外部的处理实体进行处理,实现了将事件源和监听器分开的机制。事件处理者(监听器)通常是一个类,该类如果能够处理某种类型的事件,就必须实现与该事件类型相对的接口。例如,一个ButtonHandler类之所以能够处理ActionEvent事件,原因在于它实现了与ActionEvent事件对应的接口ActionListener。每个事件类都有一个与之相对应的接口 AWT事件事件(1)低级事件是指基于组件和
14、容器的事件,当一个组件上发生事件,如鼠标的进入、点击、拖放等,或组件的窗口开关等时,触发了组件事件。ComponentEvent(组件事件:组件尺寸的变化、移动);ContainerEvent(容器事件:组件增加、移动);WindowEvent(窗口事件:关闭窗口、窗口闭合、图标化);FocusEvent(焦点事件:焦点的获得和丢失);KeyEvent(键盘事件:键按下、释放);MouseEvent(鼠标事件:鼠标单击、移动)。(2)高级事件(语义事件)高级事件是基于语义的事件,它可以不和特定的动作相关联,而依赖于触发此事件的类。比如,在TextField中按Enter键会触发ActionEv
15、ent事件,滑动滚动条会触发AdjustmentEvent事件,选中项目列表的某一条就会触发ItemEvent事件。ActionEvent(动作事件:按钮按下,TextField中按Enter键);AdjustmentEvent(调节事件:在滚动条上移动滑块以调节数值);ItemEvent(项目事件:选择项目,不选择“项目改变”);TextEvent(文本事件:文本对象改变)。AWT 事件处理器(监听器)事件处理器(监听器)一个事件监听器对象负责处理一类事件。一类事件的每一种发生情况,分别由事件监听器对象中的一个方法来具体处理。在事件源和事件监听器对象中进行约定的接口类,被称为事件监听器接口。
16、事件监听器接口类的名称与事件类的名称相对应,例如,MouseEvent事件类的监听器接口名为MouseListener。每类事件都有对应的事件监听器,监听器是接口,根据动作来定义方法。例如,与键盘事件KeyEvent相对应的接口是:public interface KeyListener extends EventListener public void keyPressed(KeyEvent ev);public void keyReleased(KeyEvent ev);public void keyTyped(KeyEvent ev);AWT 适配器(适配器(Adapter)Java语言
17、类的层次非常分明,它只支持单继承。为了实现多重继承的能力,Java用接口来实现,一个类可以实现多个接口,这种机制比多重继承具有更简单、灵活、更强的功能。在AWT中就经常用到声明和实现多个接口。请记住:无论实现了几个接口,接口中已定义的方法必须一一实现,如果对某事件不感兴趣,可以不具体实现其方法,而用空的方法体来代替,但却必须所有方法都要写上。这样一来会有一些不便,为了解决这个问题,AWT使用了适配器(Adapter),Java语言为一些Listener接口提供了适配器类(Adapter)。我们可以通过继承事件所对应的Adapter类,重写所需要的方法,无关的方法则不用实现。事件适配器为我们提供
18、了一种简单的实现监听器的手段,可以缩短程序代码AWT比如:import java.awt.*;import java.awt.event.*;public class MouseClickHandler extends MouseAdaper public void mouseClicked(MouseEvent e)/只实现所需要的方法 ./不需要实现其他方法java.awt.event包中定义的事件适配器类包括以下7个:ComponentAdapter(组件适配器);ContainerAdapter(容器适配器);FocusAdapter(焦点适配器);KeyAdapter(键盘适配器);
19、MouseAdapter(鼠标适配器);MouseMotionAdapter(鼠标运动适配器);WindowAdapter(窗口适配器)。Swing Swing介绍介绍 Swing 是在AWT的基础上构建的一套新的图形界面系统,它提供了AWT 所能够提供的所有功能,并且用纯粹的Java代码对AWT 的功能进行了大幅度的扩充。例如说并不是所有的操作系统都提供了对树形控件的支持,Swing 利用了AWT 中所提供的基本作图方法对树形控件进行模拟。由于 Swing 控件是用100%的Java代码来实现的,因此在一个平台上设计的树形控件可以在其他平台上使用。由于在Swing 中没有使用本地方法来实现图
20、形功能,我们通常把Swing控件称为轻量级控件 SwingAwt与与Swing的区别的区别AWT 是基于本地方法的C/C+程序,其运行速度比较快;Swing是基于AWT 的Java程序,其运行速度比较慢。对于一个嵌入式应用来说,目标平台的硬件资源往往非常有限,而应用程序的运行速度又是项目中至关重要的因素。在这种矛盾的情况下,简单而高效的AWT 当然成了嵌入式Java的第一选择。而在普通的基于PC或者是工作站的标准Java应用中,硬件资源对应用程序所造成的限制往往不是项目中的关键因素,所以在标准版的Java中则提倡使用Swing,也就是通过牺牲速度来实现应用程序的功能。awt在性能和外观上、以及
21、易用性上比起Swing来说确实要好得多。但是SWT的致命缺点在于:与平台绑定过紧,跨平台发布的时候比Swing要麻烦得多。awt有个缺点:必需使用本地动态库.SWING可以不考虑这点.什么是Applet?Applet就是使用Java语言编写的一段代码,它可以在浏览器环境中运行。它与Application的区别主要在于其执行方式的不同。application是从其中的main()方法开始运行的 Applet是在浏览器中运行的,必须创建一个HTML文件,通过编写HTML语言代码告诉浏览器载入何种Applet以及如何运行。执行Applet 用浏览器打开嵌入Applet的HTML文件 或者用JDK自带
22、的命令行工具appletviewer打开HTML文件 appletviewer hello.htmlApplet的执行过程 浏览器载入要访问的HTML文件的URL地址。浏览器装入HTML文件 浏览器载入Applet的类字节代码 启动Java虚拟机执行Applet。Java.applet.Applet类java.lang.Object|+-java.awt.Component|+-java.awt.Container|+-java.awt.Panel|+-java.applet.AppletApplet中的主要方法 init()在Applet创建时被虚拟机自动调用,用来完成数据的初始化。star
23、t()init()方法被调用之后,接着调用start()方法;每次Applet被激活时,都会调用start()方法。stop()方法其被调用时机与start()方法相反,每次Applet由活动状态变为不活动状态时,都会自动调用stop()方法。destroy()方法Applet销毁时由虚拟机自动调用的方法,用来完成所有占用资源的释放。paint(Graphics)用来完成图形化组件的显示,当组件的显示区域发生改变时,会自动调用该方法完成图形的更新,它只修改图形的被改变区域。AWT组件绘制方法 repaint()方法在程序中调用该方法通知系统要更新显示,实际上将触发对update()方法的调用。
24、update(Graphics)方法缺省情况下,该方法先要对整个显示区域的背景进行刷新,然后再调用paint()方法。Graphics类 drawLine()/在此图形上下文的坐标系统中,绘制一条直线。drawPolygon()/绘制一个闭合多边形。drawRect()/绘制指定矩形的边框。drawString()/使用此图形上下文的当前字体和颜色绘制由指定 string 给定的文本。drawOval()/绘制椭圆的边框。drawImage()/绘制当前可用的指定图像 与Applet的执行有关的标记.alternateHTML archive=archiveList用来指示Applet执行前被
25、预先载入的类字节代码或者是其它资源的压缩文件(*.jar文件)。code=appletFile.class标志要执行的Applet代码。width=pixels height=pixels制定Applet执行时的初始显示大小。codebase=codebaseURLApplet代码所在的网络基地址。alt=alternateTextApplet不能正常执行时显示的替代文本。name=appletInstanceNameApplet的名字。align=alignmentApplet显示的对齐方式,如:left,right,top,texttop,middle,absmiddle,baseline
26、,bottom,and absbottom。vspace=pixels hspace=pixels Applet与显示边框之间的垂直、水平间隔。标记Applet执行时传递给它的参数,由name指定参数名,value指定参数值。与Applet有关的常用方法 getDocumentBase()返回该Applet所在的HTML文件的URL基地址。getCodeBase()返回该Applet字节码所在的URL基地址。getImage(URL base,String target)获取一个图像资源对象。getAudioClip(URL base,String target)获取一个声音资源对象。播放声音
27、的支持play(URL soundDirectory,String soundFile);play(URL soundURL);AudioClip类 在Applet中载入AudioClip对象AudioClip sound;sound=getAudioClip(getDocumentBase(),bark.au);利用AudioClip对象播放声音sound.play();sound.loop();sound.stop();支持的声音文件类型有:.midi,.wav,.aiff,.au在HTML和Applet之间传递参数 Applet执行时的问题 用浏览器打开Applet时,需要借助于相应于J
28、DK版本的Plug-in软件,才能够正确执行。先安装一个Java Plug-in软件 再安装一个HTMLConverter工具 用HTMLConverter工具把.HTML文件进行转换,用浏览器打开转换后的.HTML文件,就可以正确加载和执行Applet。java web start java web start介绍介绍 JWS 是作为 JSR-56(Java Specification Requests)的一部分而创建的,目的是提供一种方法来分发在客户端上的JVM 中运行的 Java 应用程序。JWS 包括以下特征:部署部署 运行 JWS 应用程序包括选择 HTML 链接,与打开新的页面没有
29、什么区别,惟一的不同之处在于 Web 服务器页面是.jnlp 文件,该文件启动 JWS 插件来在客户端上本地下载和执行应用程序。缓存缓存 一旦应用程序下载完毕,就可以把它缓存在客户端电脑上。每当应用程序重新启动时,JWS 就检查服务器,查看是否有更新的版本要下载。如果没有,就运行本地的版本,从而避免再次下载。如果存在一个新的版本,就自动检索新的版本,因此管理员从来就不必担心旧的客户端连接到已更新的服务器程序 API 上。java web start 安全性验证安全性验证 Java 安全性模型用于验证 JWS 应用程序的来源并限制对易受攻击的系统服务(比如 I/O 和通信)的访问。必须通过认证已
30、签署的 JAR 文件来授予每个 JWS 程序显式访问这些服务的权限。桌面集成桌面集成 一旦 JWS 应用程序从.jnlp 文件下载完毕,就可以把它集成在桌面上作为独立的图标。这样该应用程序就可以重新启动而不用通过 Web 浏览器java web start获得获得java web start软件软件Java Web Start 软件作为 JRE 5.0 的一部分包含在 Java Runtime Environment(JRE)中。也就是说,当您安装 JRE 时,即会自动安装 Java Web Start 软件。第一次下载采用 Java Web Start 技术的 Java 应用程序时,Java
31、 Web Start 软件会自动启动。Java Web Start 软件将整个应用程序高速缓存(存储)到本地计算机上。这样,所有必需的资源都已保存在本地,因此以后再次启动时几乎可以瞬间完成。每次启动应用程序时,Java Web Start 软件组件都会检查应用程序的 Web 站点以确定是否有新的版本,如果有,则立即下载并启动新版本。通过命令提示符:您还可以通过在命令提示符下键入 javaws jnlp_url 来启动应用程序,其中 jnlp_url 是应用程序的 jnlp 文件的 URL 地址。转至“开始”“运行”键入“cmd”。此时将显示命令提示符窗口。键入“javaws url_of_jn
32、lp”。java web startJNLPJNLP(全称Java Network Launch Protocol)意为Java网络装载协议。JNLP是一为Java Web Start应用程序提供基本的元素和描述的XML文件。JNLP是Java Web Start的核心。JNLP应用程序能使应用程序像标准的JAVA Applet一样通过WEB浏览器访问,并且在客户机主机上JNLP可以限制为一个安全的“沙箱(sandbox)”.不像Applets,JNLP应用程序不运行的客户的浏览器内部;相反,WEB浏览器只作为应用程序的一个起点或安装工具。JAVA桌面应用程序以JNLP 的方式发布,如果版本升
33、级后,不需要再向所有用户发布版本,只需要更新服务器的版本,这就相当于让java应用程序有了web应用的优点。java web startjnlp文件文件demo:Draw 4 App Sun Microsystems,Inc.A minimalist drawing application along the lines of Illustrator Draw Demo Short Description 说明参考:download.oracle/javase/1.4.2/docs/guide/jws/developersguide/syntax.html解释说明:解释说明:1:jnlp sp
34、ec必须是1.0以上版本,次数用的是1.0+;codebase 属性指出搜索应用程序资源的顶级URL。href 属性设置是为了让应用程序进入 Java Web Start 应用程序管理器2:information 标记(如 title、vendor 等)用于提供来自 Java Web Start 应用程序管理器的关于应用程序的附加信息。homepage ref 属性是专门用于指向 Web URL 从而用户可以去提供了关于应用程序的更多的信息的 Web 页面。最有趣的 information 标记是 offline-allowed 属性;该属性决定了客户机 Java 应用程序是否能离线启动。当离
35、线运行客户机 Java 应用程序时,Java Web Start 将继续判定来自 Web 服务器的最新的文件;在多数情况下,这个方案将引起快速的超时(因为位置被指定要离线启动),并且应用程序从本地高速缓存启动-3:resource 标记考虑到 JNLP 文件指定应用程序使用哪些 JAR 文件和如何下载 JAR 文件;即,是急切的还是不紧不慢的。这个特性在当用户要下载大量的文件而对用户来说不是所有的文件都是客户机执行所需要的时是非常有帮助的。缺省的,多数资源是急切的下载的,在这样情况下,JAR 文件和资源在应用程序启动前被下载。不紧不慢的下载的资源只有当 Java 虚拟机(JVM)触发从应用程序
36、载入资源或文件时才被下载。不紧不慢的下载资源的一个示例是客户机的帮助文件;考虑到了客户机的更快的启动和执行,只有在用户实际上向客户机请求帮助文件时,才会下载这些文件。然而,一旦用户请求了一个帮助文件,在请求过程中适当的 JAR 就会被下载,并伴有一个通知用户大致的下载时间的窗口。4:Application-desc必须,指定Web Start启动时执行jar文件中的哪个类 5:security 属性。缺省的,任何从 Java Web Start 客户机启动的 Java 应用程序在一个安全的、受限制的环境执行,该环境中不允许进行本地文件访问、与其它计算机的网络连接等等。然而,对于要对客户机和网络可以完全访问的特性丰富的客户机来说,all-permissions 值是用于给予客户机完全访问的权限的。为具有对本地机的完全访问,Java 应用程序所使用和装入的所有 JAR 文件和资源必须被数字签名.Demo 分析 1:Applet 项目演示分析 2:web start 项目演示分析