第9章 Java 应用程序和Applet小程序实例

单词和缩写

  init start stop destory Font Bold Italic String CodeBase

  Code Width Height Pixel 

9.1 Java 标准类和类中方法的调用

9.1.3 数学运算(Math)类(P169)

 数学类引用格式:

   Math.method(variable);

 数学运算(Math)类的定义:

  public final class java.lang.Math extends java.lang.Object{

   ......

   public static double cos(double a);

   public static double sin(double a);

   }

9.1.4 图形(Graphics)处理类(P170)

 图形(Graphics)处理类的定义:

  public abstract class java.awt.graphics extends java.lang.Object{

   public abstract boolean drawImage(Image img,int x,int y,

                  Color bgcolor,ImageObserver observer); // 显示图像

   public abstract viod drawLine(int x1,int y1,int x2,int y2);//画线

   public abstract viod setColor(Color c);            //设置当前颜色

   public abstract viod setFont(Font font);           //设置当前字体

[示例 9.4] 在图形对象中绘制字符串

   public viod paint(Graphics g){

     g.drawString("Hello World!",5,5);

   }

 1.绘制线、矩形、椭圆(P172)

 2.复制图形(P176)

   copyArea(int x,int y,int width,int height,int dx,int dy);

 3.清除图形

   clearRect( int x,int y,int width,int height);

   clearRect( 0,0,size().width,size().height);  // 清除显示区

[实例 9.2] Java 矩形圆形 jvjy.exe  jvjy_dm.htm(P178)

[实例 9.3] 函数计算 hsjs.exe  hsjs_dm.htm(P179)

9.3 Java 语言 Applet 小程序

  小程序指定宽高:size().width,size().height);适合页中调整。

 应用程序指定宽高:像素点 800*600。

[实例 9.4] 正弦波 zxb.htm(P182)

 * 在 HTML 中使用 Applet

  <Applet

     CodeBase=codebaseURL               //设置路径

     Code=AppletFileName                 //指定 包名.类名.class

     Alt=AlternateText                 //转显提示文本

     Width=pixels Height=pixels    //宽高的像素点

   >

   </Applet>

 

习题 9 (P187)

9.4 编写实现绘图功能的 Applet 小程序,

  动态演示水平/垂直的正弦波、多叶曲线。(P182)

    编写实现绘图功能的 Application 应用程序,

  动态演示水平/垂直的正弦波、多叶曲线。(P178)

补充题 使用 Java 语言的图形功能设计各种图形程序。

  1)多色多叶曲线 dsdyqx.htm、换笔增叶 hbzy.htm

      变色3叶曲线(bs3yqx.java):红绿蓝 ss3yqxtx

      动态3色3叶曲线(dt3s3yqx.java):红绿蓝

      三色3叶曲线(ss3yqx.java):红绿蓝

     四色4叶曲线(ss4yqx.java):红绿蓝黄

     五色5叶曲线(ws5yqx.java):红绿蓝黄青

  2)多叶曲线设计考虑因素

     线宽、花叶颜色、各叶片色、背景色、叶数、位置、显示速度

     r,g,b:背景颜色 画笔颜色

    x,y:水平移动图形 x=0--639 垂直移动图形 y=0--479

    r1,r2:水平方向半径 r1=0--320 垂直方向半径 r2=0--240

    i,j:心形曲线叶片 i=1--24 心形曲线弧度 j=0--2*PI

  3)正弦波设计考虑因素

    线宽、颜色、分段颜色、背景色、波峰数、显示速度

    画图方向:向左画、向右画、向上画、向下画、同时向右和向下画

    位置:水平、垂直多条正弦波

 

第10章 Java 语言多线程编程

 1.CPU 时间分割

  实现同时运行多任务、多线程。

——————| ——————| ——————| ————————| ——————|→t
子任务1/线程1 子任务2/线程2 子任务3/线程3
任务1/进程1/程序1 任务2/进程2/程序2 任务3/进程3/程序3

 2.多任务:操作系统能同时运行多个进程。

   一个进程可以同时执行多个线程。

 3.多线程:程序分割成多个独立的程序段作为子任务。

10.1.4 sleep()线程休眠方法(P197)

  public void run(){

    Thread.sleep(1000);

  }

  线程休眠 1000 毫秒。

 

第11章 Java 语言 网络编程

单词和缩写

  setColor setBackground setForeground repain

 TCP(Transmission Control Protocol)

 UDP(User Datagram Protocol)

  网络编程(P262)

  Applet小程序:插入网页。

  Java.net  Java核心包的网络包:网络通讯(客户端、服务器端)

第1节 网络技术基础

    提供适用TCP和UDP网络协议的类。

应用层 HTTP,FTP

TCP,UDP

IP

设备驱动程序

应用层
传输层 传输层
网络层 网络层
链路层 链路层
物理层
(网络的物理连接设备)

 1.网络通讯协议(TCP)(P262)

   点对点网络连接传输,应用程序有HTTP,FTP。

 2.用户数据报协议(UDP)

   数据包网络通信方式。

   应用程序有ping,测试网络连接的计算机接通情况。

 3.网络通信地址标识(P263)

目的计算机

端口(COM1)

主机名(IP地址)
网易ftp.go.163.com

应用程序
DOS功能调用 INT21
异步通讯输入、输出 AH=03H 04H

 4.网络数据包的传送(P263)

应用程序

|

端口8080

TCP或UDP

|

网络数据包

|

主机名(IP地址)
http://www.ncsa.uiuc.edu

端口号
:8080

数据(路径/文件名)
/demoweb/index.html

第2节 URL

12.2.1 URL概念(P263)

  统一资源定位器URL(Uniform Resource Locator)

  网上资源的指针,指向文件、目录、对象(查询数据库、搜索引擎)

主机名(IP地址)
http://www.ncsa.uiuc.edu

端口号
:8080

数据(路径/文件名)
/demoweb/index.html

   主机名分隔符(://)

   端口分隔符(:)

   路径/文件名分隔符(/)

12.2.2 URL类(P264)

 1.构造器

   URL对象是确定资源的位置。

   public URL(string protocol,string host,int port,

     string file) throws MalformedURLException

   (协议:http,ftp、主机名、端口、主机文件、形成URL出错异常)

  例如:创建URL对象

  try{

      URL urla=new URL("http","hostname",80,"index.html");

      }catch (MalformedURLException e){......}

 2.方法

   public int getPort() 得到URL对象的端口号

   public String getProtocol() 得到URL对象的协议名

   public String getHost() 得到URL对象的主机名

   public String getFile() 得到URL对象的文件名

12.2.3 URLconnection类(P265)

   URLconnection类:抽象类,实现应用程序和URL间通信连接,

     读写URL的资源。

   abstract public void connect() throws IOException

   打开与URL所指定资源的通信连接。

12.2.4 实例:从Internet下载HTML文件(P267)

   创建FileOutputStream对象用于写文件

   FileOutputStream fileOut=new FileOutputStream(args[1]);

第3节 InetAddress类(P269)

12.3.1 InetAddress类简介

   InetAddress类:存储远程系统的IP地址。

   InetAddress remoteOP=InetAddress.getByName("java.sun.com");

   通过名字确定机器的IP地址。

第4节 TCP Sockets套接字编程

12.4.1 TCP Sockets基础(P270)

 1.TCP Sockets是两台机器进行通信的端点,

     开发“客户机/服务器”应用。

 2.创建TCP Sockets需要的信息:

   本地系统的IP地址。

   本地应用程序正在使用的TCP端口号。

   远程系统的IP地址。

   远程系统应用程序相应的TCP端口号。

 3.Sockets在“客户机/服务器”中的应用:

   守护进程,等待请求,处理并返回结果。

 4.UNIX操作系统中端口的分配:

   低于1024的端口:捆绑拥有超级用户权限的应用,

   高于1024的端口:动态或临时分配给客户机应用程序。

 5.客户机应用程序建立Socket连接,捆绑端口(FTP 21,HTTP 80)。

12.4.2 SocketImpl类(P272)

   SocketImpl类:创建客户机Socket和服务器Socket。

 1.成员变量

   protected FileDescriptor fd; //socket 的文件描述符对象类

   protected InetAddress address; //socket 远端的IP地址

   protected int port; //socket 连接的远程主机的端口号

   protected int localport; //socket 连接的本地端口号

 2.方法

  * protected abstract void create(boolean stream)

   throws IOException

   创建一个流(stream)或数据报(datagram)Socket,

   stream为true:创建一个流Socket

   stream为fals:创建一个数据报Socket

  * protected abstract void connect(string host,int port)

   throws IOException

   连接Socket到远程主机host上的指定端口port。

  * protected abstract void bind(InetAddress host,int port)

   throws IOException

   捆绑Socket到IP地址为address的远程主机的指定端口port。

12.4.3 Socket类(P273)

  Socket类:实现客户端的Socket的实例,执行Socket的实际工作。

 1.构造器

   public Socket

   (String host,int port,InetAddress localAddr,intlocalPort))

   throws IOException

 2.方法

  * public InputStream getInputstream()throws IOException

    得到从Socket读取字节的输入流。

  * public OutputStream getOutputstream()throws IOException

    得到向Socket写字节的输出流。

12.4.4 ServerSocket类

   ServerSocket类:创建TCP Socket服务器。

 1.构造器(P276)

   public ServerSocket(int port)throws IOException

   在指定端口创建监听ServerSocket

 2.方法

   public int getLocalPort()

   得到ServerSocket用于监听的端口号。

 3.ServerSocket类的使用(P277)

   在端口创建ServerSocket后,

   用accept()方法等待客户的连接请求,

   客户机完成连接后,打开流,处理发生的通信。

12.4.5 “客户机/服务器”通信协议的开发流程

  “客户机/服务器”通信:实现通信协议的基本步骤(P277)

 

客户机

服务器

初始化

2.建立Socket对象
  向服务器发出链接请求

1.建立ServerSocket对象
  等待客户机的链接请求

建立链接

 

3.响应客户机,建立链接

请求响应

4.发出请求

5.响应请求

处理结果

7.接收处理结果

6.返回处理结果

中断链接

8.直到结束对话

9.中断链接,结束通信

 

第5节 UDP Socket编程

12.5.1 UDP Socket基础(P282)

 1.概念

   TCP(Transport Control Protocol):

   传输控制协议,面向连接,可靠连接。

   UDP(User Datagram Protocol):

   用户数据报协议,无连接,效率高。

 2.IP多点传送

   点对点:单点传播。

   多点传送:有限广播,适合高带宽,发送网络音视频。

   无限点传送:无限广播。

12.5.2 DatagramPacket类

   DatagramPacket类(P284)

   创建发送的数据报,读取数据报中的数据。

 1.构造器

   public DatagramPacket

   (byte[] ibuf,int length,InetAddress iaddr,int iport);

    编码信息数据的字节数组,长度(64kB),

  接收方的主机名和IP地址,端口

 2.方法

   public synchronized byte[] getData();

   得到接收数据报中的数据

第6节 RFC

12.6.1 RFC概述(P289)

   RFC(Request For Comments):

   请求注解,Internet标准草案,可以实现所有的网络应用。

12.6.2 利用WhoIs 协议查询Internet 域名(P290)

 1.原理

   访问InterNIC站点 http://www.internic.net/whois.html

   WhoIs 服务器从WhoIs数据库中查询所输入的内容;

 2.编程方法

   用Socket类的构造器创建流Socket;

   public Socket(string host,int port)throws IOException

   连接主机"whois.intrenic.net"的端口43;

   创建Socket时发生I/O错误,则抛出IOException异常;

   用getInputStream()和getOutputstream()方法分别得到

   该Socket的输入流和输出流,用于对该Socket进行数据读写;

   完成Socket通信后,先关InputStream()和Outputstream(),

   后关Socket。

   

第12章 Java 语言多媒体编程

12.2 图形和图像处理

12.2.1 设置图形颜色

[实例 12.2] 变色彩条(P255)

12.2.2 绘制图形实例

[实例 12.3] 画图工具(P256)

12.2.3 图像文件显示

[实例 12.4] 彩条图像(P261)

12.3 动画制作

12.3.2 动态显示图像

时钟针转一周360°,时钟针每秒转过的角度:

秒针 6(度/秒),分针 0.1(度/秒),时针 1/120(度/秒)。

 

附录 Visual J++6.0简介

Visual J++6.0 主界面

Visual J++6.0

文件

编辑

查看

项目

编译

调试

工具

窗口

帮助

新建
工程

增加
项目

打开
工程

保存
文件

 

开始
调试

断开
调试

结束
调试

 

查找
替换

 

工程
浏览

属性
窗口

工具箱

任务
列表

 

调试
设计

编辑
HTML

工具箱

Visual J++6.0

编辑区

工程
浏览

HTML

Solution
Project1
Applet1.java
Page1.htm

任务列表

 

  VJ++编制动态HTML程序,

  可将Java应用程序封装为.exe或cab(cabinet),

  提供特殊的JVM。

 1.VJ++6.0 创建 Applications 应用程序的过程

   Applications 应用程序:编译生成 .exe 文件,

运行时有独立的窗口。

   例如:窗口框架 F:\JAVA\ckkj.java

 1.1 创建窗口框架(ckkj)项目

    File--New project--Applications 文件夹的

Windows Application—项目名ckkj,路径F:\Java—打开。

 1.2 编辑 ckkj.java 代码

  Project Explorer 窗口:Form1.java 改名 ckkj.java—查看—代码—

  打开ckkj.java—输入代码。

  编辑源程序(演示 Form1 模板未关闭时,有部分代码不能删除)

 1.3 编译 ckkj.java 代码生成类文件(.class)

  Build菜单—Build—指定主类 'Form1' 未发现。

 1.4 调试生成可执行文件

  debug 菜单—Start winthout debugging --launch 启动卡—

  选取自定义选项 costom——生成 .exe 文件。

2.VJ++6.0 创建 Applet 小程序的过程

  Applet 小程序:编译生成 .class 文件,插入网页中,

  浏览时包含在浏览器窗口中。

  例如:正弦波 F:\JAVA\apkj.java

 2.1 创建小程序框架(apkj)项目

    File--New project--Web Page 文件夹的 Applet on HTML—

   项目名apkj,路径F:\Java—打开。

 2.2 编辑 apkj.java 代码

   Project Explorer 窗口:Applet1.java 改 apkj.java—

   打开apkj.java—编辑源程序。

 2.3 编译 apkj.java 代码生成类文件(.class)

   Build菜单—Build—编译生成类文件(.class)。

 2.4 调试把类文件插入网页

   调试Debug—Start—浏览器窗口Page1.htm—查看—源文件—

   Applet1.class 改 apkj.class。

 3.VJ++6.0编辑文本字号选择

   tools--options--text editor--font and colors--size 16磅。