Ch07 Java Applets 物件導向系統實務.

Slides:



Advertisements
Similar presentations
第 2 章 Java 运行环境搭建 2.1 Java 的运行系统 2.1 Java 的运行系统 2.2 JDK 的安装与配置2.2 JDK 的安装与配置 2.3 Java 开发工具包 2.4 Java 源文件编辑环境的选择 2.5 Application 和 Applet 程序的编写与运行.
Advertisements

Java 程序分类 Java Application :是完整程序,需要独立的解 释器解释运行;以 “.java” 为后缀的文件,以 main() 方法作为程序入口,由 java 编译器编译生 成字节码,由 Java 解释器加载执行字节码。 Java Applet 没有 main() 方法作为程序入口,是嵌在.
程序设计语言基础 软件工程系 秦晓燕. 课程目标 了解面向对象程序设计的思想,以及软件 开发流程。 学习 Java 语言的基本概念和编程方法,基 本掌握 Java 类库的使用。 能够利用所学的方法开发简单的小型应用 程序.
Java 程序设计 案例教程 北京大学出版社 第 01 章. Java 程序设计案例教程 第 01 章 Java 语言与面向对象程序设计 Java 语言的历史 Java 语言的特点 Java 程序的分类 Java 环境配置 Eclipse 的安装 Java 程序的调试 教学目标.
Java 程序设计(第二版) 普通高等教育 “ 十一五 ” 国家级规划教材 辛运帷等 编著 徐小平 主讲.
单元二:面向对象程序设计 任务二:借书卡程序设计.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
第1章 Java语言概述.
《 Java开发环境配置》 主讲人:耿力.
Java 2实用教程(第3版)教学课件 主讲教师:张国平
第八章:网络应用制作技术 本章介绍网络各种应用中所涉及的基本概念和制作技术,包括HTML、网页的制作、Java、Java Script语言的初步基础,VRML语言的基本功能,以及网络环境下分布式数据库系统和客户服务体系的构造方法及技术。
Java程序设计教程 第一讲 Java概述.
Java的程式架構與基本觀念 Java語言的歷史 Java程式的開發環境 Java程式的架構 輸出與輸入物件之使用 工具使用方法介紹
四資二甲 第三週作業 物件導向程式設計.
面向对象程序设计(JAVA) 刘栓 信息工程学院.
Web技术 第8章 Applet应用 龚涛 东华大学信息科学与技术学院 2016年3月 教材:《JSP程序员成长攻略》
Java System Concepts and Animation Programming
Hello小程序的运行和编译 Java AppletJava小程序的构成 1、关键字
《Java程序设计之网络编程》 教学课件 重庆大学计算机学院
面向对象程序设计(Java) 徐志红
网页 设计与制作.
第8章 CSS基础知识 【学习目标】 对于一个网页设计者来说,对HTML语言一定不感到陌生,因为它是网页制作的基础,但是如果希望网页能够美观、大方,并且升级维护方便,那么仅仅知道HTML还是不够的,还需要了解CSS。了解CSS基础知识,可以为后面的学习打下基础。 本章主要内容包括: 为什么在网页中加入CSS。
第二十章 圖型介面與網路對播 (GUI and Intercross Transition) 20-1 簡介 20-2 ActionListener Interface 20-3 ActionEvent Class 20-4 Vector Class 20-5 圖型介面與視窗關閉 20-6 圖型介面與資料顯示.
项目:贪吃蛇游戏设计 工作任务一:系统设计(system design) 工作任务二:豆类(Bean)设计
计算机学院计算机科学与技术系 中德联合软件技术研究所 李波
6.5 图形界面的布局设计 每一个容器组件都有一个默认的布局管理方式,也可以用setLayout方法来设置其他布局管理器。一旦确定了布局管理方式,容器组件就可以用add方法加入组件。 布局管理器用来确定组件在容器中的位置和大小,AWT中定义了布局管理器接口LayoutManager的实现类来实现此功能。
Java Applet的运行原理 在网页向Java Applet传值 在Java Applet中播放声音 在Java Applet中使用组件
第11章 Java多媒体技术.
第14章 图形与图像 14.1 绘制文本 14.2 绘制基本图形 14.3 建立字体 14.4 清除 14.5 Java 2D
第三部分 Java语言编程应用篇 第6章 Java语言的 图形用户界面开发技术 (之二).
第6章 网页图像处理 通过本章学习,应该掌握以下内容: 能够选择合适的网页颜色 了解网页图像的基本格式 掌握使用网页图像的要点
第二部分 Java语言基础篇 第4章 Java语言与面向对象 (之一).
第1章 java简介及环境搭建 第1章 Java简介及开发环境搭建.
Ch07 介面與多重繼承 物件導向程式設計(II).
第5章 Java中类、对象、接口 及包的概念 5.1 类的基本概念 5.2 类的继承概念 5.3 抽象类和接口 5.4 包.
Ch02 視窗Swing套件 物件導向系統實務.
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
2018/11/15 面向对象与多线程综合实验-GUI设计 教师:段鹏飞.
Java Applet 介绍.
Java语言程序设计 第七部分 多线程.
2018/11/20 第一章 Java概述 武汉大学计算机学院计算机应用系 2018/11/20 14:33.
Chapter 9 設計的精細製作: 行動計算 Software Engineering – An Engineering Approach, James F. Peters & Witold Pedrycz.
CH09 套件 物件導向程式設計(II).
記事本 物件導向系統實務.
第10章 Java的线程处理 10.1 线程的基本概念 10.2 线程的属性 10.3 线程组 10.4 多线程程序的开发.
Java语言程序设计 第八部分 Applet小程序.
第12章 繪圖與多媒體 12-1 繪圖的基礎 12-2 繪出文字和圖形 12-3 載入與顯示圖形檔案 12-4 建立多媒體的動畫效果
9.1 程式偵錯 9.2 捕捉例外 9.3 自行拋出例外 9.4 自定例外類別 9.5 多執行緒
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
Ch04 事件處理 物件導向系統實務.
主讲:陶建平 华中科技大学网络与计算中心
CH04 視窗中元件排排坐 物件導向系統實務.
C/C++/Java 哪些值不是头等程序对象
資訊學科中心研習 JAVA程式設計專題 臺北市立大理高級中學 黃世隆 2019/2/23.
事件處理.
Multithread 多執行緒 以GUI為例了解物件以及Event
第13章 CSS 通过CSS可以使用更丰富、更灵活的样式,更简单地 设计出更美观的网页。同时,也让网页的设计与维护 更有效率。CSS在网页设计中的作用尤为重要,是网 页设计师必备的知识。本章首先介绍什么是CSS、CSS 的基本语法等基础知识,接着学习利用“CSS”面板 管理规则,如何在Dreamweaver中创建与应用CSS样式.
《JAVA程序设计》 语音答疑 辅导老师:高旻.
第二章Java基本程序设计.
第十二章 过滤器.
Java程序设计 第13章 图形.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第6章 面向对象的高级特征 学习目标 本章要点 上机练习 习 题.
Java语言程序设计 清华大学出版社 第6章 java图形与图像处理.
Applet.
只要功夫深 铁杵磨成针 —— 写在前面的话.
组件 组件是构成图形用户界面的各种元素。通过对不同事件的响应来完成和用户的交互或组件之间的交互。组件分为容器(Container)类和非容器类组件两大类。 控制组件有Button按钮 、Checkbox复选矿、 Choice下拉列表、Label标签、List列表、textcomponent文本(TextField文本域.
第四章 jsp语法 4.1 jsp页面的基本结构 一个jsp页面可由五种元素组合而成: 普通的html标记符
事件处理 例: import java.applet.Applet; import java.awt.*;
变量定位图形 Java中数据的类型分为四种:基本数据类型、数组类型、类类型以及接口类型。任何常量和变量都一定是上述四种数据类型中的一种。简单数据类型的实例化有两种:变量和常量。 变量名和常量名必须是Java语言中合法的标识符。 常量是在程序运行期间值不改变的量。 变量是在程序运行期间值可通过赋值改变的量,
Presentation transcript:

Ch07 Java Applets 物件導向系統實務

Applet Applets不是完全獨立的應用程式,而是在瀏覽器(IE或Netscape Navigater)或JDK(Java Developer’s Kit)提供的appletviewer中執行的程式 Applets程式被編譯後,在HTML檔案中加入applet標籤<applet>…</applet> 2018/11/18

Applet的執行 之前的Java程式: Java的applet程式: javac xxx.java java xxx 將產生的xxx.class內嵌於HTML檔案中 2018/11/18

Applet類別繼承關係圖 Java.lang.Object java.awt.Component java.awt.Container java.awt.Panel java.applet.Applet http://java.sun.com/j2se/1.5.0/docs/api/java/applet/package-tree.html 2018/11/18

Applet架構 Applet衍生自Appplet類別,所以必須引入java.applet 在視窗中執行applets必須載入AWT import java.applet.*; 在視窗中執行applets必須載入AWT import java.awt.*; 建立類別時宣告extends Applet,表示繼承Applet 在Applet類別不再需要main()方法 也不使用System.out.println(),而是使用AWT提供的方法paint() Public void paint(Graphics g) { g.drawString(“Hi, How Are You!”, 70, 100); } 2018/11/18

範例1:Ch04_01.java import java.applet.Applet; import java.awt.*; public class Ch04_01 extends Applet { public void paint(Graphics g) g.drawString("Hi How are you!", 70, 100); } 2018/11/18

範例1:Ch04_01.html <HTML> <head> <title>Ch04_01.html</title> </head> <body> <hr> <center> <applet code = Ch04_01.class width = 200 height = 200 > </applet> </center> </body> </html> 2018/11/18

Applet元件的屬性 <applet code = “xxx.class” width = x height = y > Xxx.class:在xxx.class中含有編譯過的applet類別 X, y:定義applet的繪圖區大小(像素) 大部份電腦螢幕所支援的解析度為800X600像素 2018/11/18

範例2:Ch04_02.java import java.applet.Applet; import java.awt.*; public class Ch04_02 extends Applet { public void paint(Graphics g) setBackground(Color.yellow); Font f = new Font("標楷體", Font.BOLD, 20); g.setFont(f); g.setColor(Color.red); showStatus("Java(4)"); g.drawString("嗨!你好!!", 70, 100); } 2018/11/18

Applet架構 Applet不是從main()開始執行,它有自己的一套特殊運作機制 四個重要的方法: init() start() stop() destroy() 2018/11/18

Applet架構 Init():當applet被啟動時,init()是最先被執行的方法,而且它只會被執行一次,所以,可將初始值放在此處 Start():它在init()執行後會執行一次,但是當網頁被離開後,再回來時,start()會被再執行,所以,applet的主程式碼會放在start() Stop():用來停止applet動作,或是網頁要跳去另一個網頁時,會呼叫start()方法 Destroy():當確定這個applet不會再用到時,可以呼叫destroy() 2018/11/18

Applet架構 Init() Start() Stop() Destroy() 2018/11/18

範例3:Ch04_03.java import java.applet.Applet; import java.awt.*; public class Ch04_03 extends Applet { String message = "啟動 / "; public void init() {message += "進入 init() / "; } public void start() { message += "進入 start() / "; public void paint(Graphics g) { setBackground(Color.yellow); Font f = new Font("標楷體", Font.BOLD, 20); g.setFont(f); g.setColor(Color.red); message += "進入 paint() / "; g.drawString(message, 10,10); 2018/11/18

Repaint()和update()方法 當applet要進行重新繪製視窗畫面時,applet先呼叫repaint()方法,repaint()再呼叫update()方法,update()方法再呼叫paint() 在一般情況下,我們不用去覆寫repaint()和update() 如果,要在程式某個地方,更新或重繪畫面時,只要呼叫repaint() Repaint(long tm)可以強迫在tm毫秒內執行重繪 2018/11/18

範例4:Ch04_04.java import java.applet.Applet; import java.awt.*; public class Ch04_04 extends Applet implements Runnable { Font f = new Font("標楷體", Font.ITALIC, 24); Thread t; String str; int m, n = 0; public void init() { str = "~~ 歡迎光臨 ~~"; } public void start() { t = new Thread(this); t.start(); public void paint(Graphics g) { setBackground(Color.cyan); g.setFont(f); if((n++)%2 == 1) { g.setColor(Color.green); } else { g.setColor(Color.red); } g.drawString(str, 30,50); } public void run() { while(true) { try { t.sleep(200); //每0.2秒執行一次 catch(InterruptedException e) {} repaint(); 2018/11/18

練習一:跑馬燈 修改Ch04_04.java,製作由左向右移動的跑馬燈 2018/11/18 Ex01_04_01.java + Ex01_04_01.html 2018/11/18

<applet>標籤屬性 <applet CODEBASE= CODE= ALT= NAME= WIDTH= HEIGHT= ALIGN= VSPACE= HSPACE= > </applet> CODEBASE:(非必要)指定applet所在的URL,       預設是html所在的位置 CODE: (必要)指定要執行的applet名稱*.class ALT: (非必要) 當使用者的瀏覽器不支援applet時,    要出現的提示語 NAME: (非必要) 用來applet取一個名字,如此同一     個網頁中的applet會知道有其他applet存在 WIDTH: (必要) 用來設定applet顯示範圍的寬度 HEIGHT: (必要) 用來設定applet顯示範圍的高度 ALIGN: (非必要) 調整applet在網頁上的位置 VSPACE: (非必要) 控制applet垂直間距的像素值 HSPACE: (非必要) 控制applet水平間距的像素值 2018/11/18

設定<applet>標籤內的參數 <param name=參數名稱 value=參數值>  … </applet> 將applet視為方法,所以在html呼叫applet時,可以將一些參數傳給applet 2018/11/18

取得參數值getParameter() String s = getParameter(String n) //n 是<param>標籤內的name參數名稱 getParameter()方法,可以用來抓取從HTML中<param>標籤name屬性所代表的value屬性值 2018/11/18

範例5:Ch04_05.html <html> <head> <title> Ch04_05.html參數傳遞 </title> </head> <body> <applet code = “Ch04_05.class" width = "300" height = "200"> <param name = "msg" value = "~~歡迎光臨~~"> <param name = "x" value = "30"> <param name = "y" value = "150"> </applet> </body> </html> 2018/11/18

範例5:Ch04_05.java import java.applet.Applet; import java.awt.*; public class Ch04_05 extends Applet implements Runnable { Font f = new Font("標楷體", Font.ITALIC, 24); Thread t; String str; int m, n = 0; int m_x, m_y; public void init() { str = getParameter("msg"); m_x = Integer.parseInt(getParameter("x")); m_y = Integer.parseInt(getParameter("y")); } public void start() { t = new Thread(this); t.start(); public void paint(Graphics g) { setBackground(Color.cyan); g.setFont(f); if((n++)%2 == 1) { g.setColor(Color.green); } else { g.setColor(Color.red); g.drawString(str, m_x, m_y); public void run() { while(true) { try { t.sleep(200); //每0.2秒執行一次 catch(InterruptedException e) {} repaint(); 2018/11/18

Applet繪圖 方法 說明 setBackground(Color 顏色) 設定背景顏色 setForeground(Color 顏色) 設定前景色 drawString(String 字串, int X座標, int Y座標) 輸出字串 drawImage(Image 影像, int X座標, int Y座標) 畫一個影像 drawLine(int 起點X, int 起點Y, int 終點X, int 終點Y) 畫一條直線 drawRect(int 上, int 左, int 寬, int 高) fillRect(int 上, int 左, int 寬, int 高) 畫一個空心長方形 畫一個實心長方形 drawRoundRect(int 上, int 左, int 寬, int 高, int X角半徑, int Y角半徑) fillRoundRect(int 上, int 左, int 寬, int 高, int X角半徑, int Y角半徑) 畫一個空心圓角長方形 畫一個實心圓角長方形 drawOval(int 上, int 左, int 寬, int 高) fillOval(int 上, int 左, int 寬, int 高) 畫一個空心橢圓 畫一個實心橢圓 draw3DRec(int 上, int 左, int 寬, int 高) 畫一個3D的長方形 drawArc(int 上, int 左, int 寬, int 高, int 起始角度, int 移動角度) fillArc(int 上, int 左, int 寬, int 高, int 起始角度, int 移動角度) 畫一個弧形 畫一個扇形 drawPolyLine(int 座標X[], int 座標Y[], int 端點數) 畫多條線段 drawPolygon(int 座標X[], int 座標Y[], int 端點數) fillPolygon(int 座標X[], int 座標Y[], int 端點數) 畫一個空心多邊形 畫一個實心多邊形 2018/11/18

顏色常數(java. awt. color) http://java. sun. com/j2se/1. 5 Color.black 黑色 Color.blue 藍色 Color.cyan 青色 Color.darkGray 深灰色 Color.gray 灰色 Color.green 綠色 Color.lightGray 淺灰色 常數 顏色 Color.magenta 紫色 Color.orange 橘色 Color.pink 粉紅色 Color.red 紅色 Color.white 白色 Color.yellow 黃色 2018/11/18

範例6:Ch04_06.java import java.applet.*; import java.awt.*; public class Ch04_06 extends Applet { public void init() setBackground(Color.yellow); setForeground(Color.blue); } public void paint(Graphics g) g.drawRoundRect(20, 30, 80, 90, 0, 0);//長方形 g.drawRoundRect(140, 30, 80, 90, 50, 50); g.drawOval(260, 30, 90, 90); g.drawLine(380, 30, 480, 120); 2018/11/18

加入控制項到applet 文字方塊: 標籤方塊: 命令按鈕: Textfield 文字方塊物件 = new Textfield(int 字數); add(文字方塊物件); 文字方塊物件.addActionListener(this); 標籤方塊: Label 標籤方塊物件 = new Label(String 字串); add(標籤方塊物件); 命令按鈕: Button 命令按鈕物件 = new Button(String 字串); add(命令按鈕物件); 命令按鈕物件.addActionListener(this); 2018/11/18

範例7:Ch04_07.java攝氏轉華氏 import java.applet.*; import java.awt.event.*; public class Ch04_07 extends Applet implements ActionListener { Label lblCelsius, lblFahrenheit; TextField txtCelsius, txtFahrenheit; Button btnTransfer; public void init() { lblCelsius = new Label("攝氏"); lblFahrenheit = new Label("華氏"); txtCelsius = new TextField(20); txtFahrenheit = new TextField(20); btnTransfer = new Button("攝氏轉華氏"); add(lblCelsius); add(txtCelsius); add(lblFahrenheit); add(txtFahrenheit); add(btnTransfer); btnTransfer.addActionListener(this); } public void actionPerformed(ActionEvent e) { float f =    Integer.parseInt(txtCelsius.getText()); f = f * 9 / 5 + 32; txtFahrenheit.setText(String.valueOf(f)); } 2018/11/18

範例8:Ch04_08.java紅綠燈控制 import java.applet.*; public void init() import java.awt.event.*; import java.awt.*; public class Ch04_08 extends Applet implements ActionListener { Button btnRed, btnYellow, btnGreen; int firstX = 65, firstY = 60; int secondX = firstX + 60, secondY = 60; int thirdX = firstX + 120, thirdY = 60; Color firstC = Color.red; Color secondC = Color.gray; Color thirdC = Color.gray; String msg = " 紅 燈 停 "; public void init() { setBackground(Color.cyan); btnRed = new Button("紅燈"); btnYellow = new Button("黃燈"); btnGreen = new Button("綠燈"); add(btnRed); add(btnYellow); add(btnGreen); btnRed.addActionListener(this); btnYellow.addActionListener(this); btnGreen.addActionListener(this); } 2018/11/18

範例8:Ch04_08.java紅綠燈控制 public void actionPerformed(ActionEvent e) { String str = e.getActionCommand(); if(str.equals("紅燈")) { firstC = Color.red; secondC = Color.gray; thirdC = Color.gray; msg = "紅 燈 停"; } else if(str.equals("黃燈")) { firstC = Color.gray; secondC = Color.yellow; msg = "黃 燈 預備停"; else if(str.equals("綠燈")) thirdC = Color.green; msg = "綠 燈 行"; repaint(); public void paint(Graphics g) { g.drawRect(firstX - 20, firstY - 20, 210, 90); //畫空心矩形 g.setColor(firstC); //設定第一個圓顏色 g.fillOval(firstX, firstY, 50, 50); //畫第一個圓 g.setColor(secondC); g.fillOval(secondX, secondY, 50, 50); g.setColor(thirdC); g.fillOval(thirdX, thirdY, 50, 50); g.setColor(Color.black); g.drawString(msg, secondX, secondY + 100); } 2018/11/18

練習二:紅綠燈 模擬路上的紅綠燈自動變燈,且提示字會隨燈號變色 提示: 拿掉按鈕的部份,ActionListener也一併拿掉 參考Ch04_04將燈號的改變,以sleep來處理 紅燈燈號持續5秒後,變成綠燈,綠燈持續5秒,再變成黃燈,黃燈持續1秒後,變成紅嬁 Ex01_08_01.java 2018/11/18