AWT(Abstract Windows Toolkit)是抽象窗口工具包的縮寫(xiě),其支持窗口界面的創(chuàng)建、簡(jiǎn)單圖形的繪制、圖形化文本輸出和事件監(jiān)聽(tīng)。Java所有與圖形有關(guān)的功能都包含在AWT包里。
11.1 基本圖形
繪制基本圖形要使用AWT中的Graphics類(lèi)
11.1.1 直線(xiàn)
格式:public void drawLine(int x1,int y1,int x2,int y2)
例:import java.awt.Graphics;
public class Line extends java.applet.Applet{
public void paint(Graphics g){
g.drawLine(50,50,100,100);} }
11.1.2 矩形
public void drawRect(int x,int y,int width,int height)
public void fillRect(int x,int y,int width,int height)//與drawRect相比,畫(huà)出矩形框后用前景色填充。
public void drawRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight)//最后兩個(gè)參數(shù)代表圓角
public void fillRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight)//用前景色填充內(nèi)部
public void draw3DRect(int x,int y,int width,int height,boolean raised)//raised為true時(shí)為三維矩形凸起, 為false時(shí)為三維矩形凹下
public void fill3DRect(int x,int y,int width,int height,boolean raised)
11.1.3 橢圓
public void drawOval(int x,int y,int width,int height) //x,y是包圍橢圓的矩形左上角位置,width,height是橢圓的寬度和高度。
public void fillOval(int x,int y,int width,int height) //用前景色填充內(nèi)部
如:public void paint(Graphics g)
{g.drawOval(30,20,60,60); //畫(huà)圓
g.fillOval(130,20,80,50);}
11.1.4 圓弧
public void drawArc(int x,int y,int width,int height,int starAngle,int arcAngle)
//starAngle起始角(以角度為單位),確定了圓弧的位置,arcAngle張角確定了圓弧的大小,取正(負(fù))值為沿逆(順)時(shí)針?lè)较虍?huà)出圓弧。當(dāng)張角大于360時(shí),畫(huà)出的就是橢圓。
public void fillArc(int x,int y,int width,int height,int starAngle,int arcAngle)
11.1.5 多邊形
public void drawPolygon(int xPoints[],int yPoints[],int nPoints)//xPoints[]是一整數(shù)數(shù)組,用以存放多邊形坐標(biāo)點(diǎn)X坐標(biāo)值,yPoints[]參數(shù)存放對(duì)應(yīng)Y坐標(biāo)值,nPoints則表示 共有幾個(gè)坐標(biāo)點(diǎn)。
public void fillPolygon(int xPoints[],int yPoints[],int nPoints)/
例:import java.awt.*;
public class SC extends java.applet.Applet{
int x[]={30,60,115,72,67};
int y[]={40,30,15,52,100};
int m=x.length;
public void paint(Graphics g)
{g.drawPolygon(x,y,m);} //m-1則少一邊,m+1則出錯(cuò)
}
11.1.6 復(fù)制與清除圖形
copyArea(int x,int y,int width,int height,int dx,int dy)//前四能參定義要被復(fù)制的屏幕的矩形區(qū)域,最后2個(gè)參數(shù)則表示新區(qū)域與原始屏幕區(qū)域的偏移距離。
clearRect(int x,int y,int width,int height)//清除指定矩形區(qū)域
要清除整個(gè)applet區(qū)域,可先調(diào)用Applet類(lèi)的size()方法得到整個(gè)applet的寬度和高度。如:g.clearRect(0,0,size().width,size().height)
例:import java.awt.*;
public class SC extends java.applet.Applet{
public void paint(Graphics g){
g.fillRoundRect(120,20,80,60,30,40);
g.copyArea(120,20,80,60,50,100);
g.clearRect(120,20,80,60);}}
11.2 畫(huà)布
11.2.1 畫(huà)布的作用
畫(huà)布(Canvas)是用來(lái)繪圖的組件,基作用和Windows的畫(huà)圖板類(lèi)似。Canvas繼承自Component類(lèi),有自己的paint方法,能響應(yīng)鼠標(biāo)和鍵盤(pán)事件。
11.2.2 創(chuàng)建畫(huà)布的實(shí)例
例P228
11.3 文字輸出
11.3.1 字符串、字符和字節(jié)輸出
(1)字符串輸出方法:public void drawSting(String str ,int x,int y)
(2)字符輸出方法:drawChars(char chars[],int offset,int len,int x,int y)
(3)字節(jié)輸出方法:drawBytes(byte bytes[],int offset,int len,int x,int y)
11.3.2 字體控制
通過(guò)類(lèi)Graphics或組件的方法getFont()和setFont()可以獲取或設(shè)置當(dāng)前使用的字體。
字體構(gòu)造方法:Font(String name,int style,int size)
name:字體名,如:“宋體”、“楷體”、“Times New Roman”、“Courier”
style:字體風(fēng)格,如:Font.BOLD(粗體)、Font.ITALIC(斜體)、Font.PLAIN(普通),由于它們被定義為整數(shù)常量,可以進(jìn)行相加運(yùn)算生成復(fù)合style,如:
Font fn=new Font(“TimesRoman”, Font.BOLD+Font.ITALIC,28)
size:字體大小
我們可通過(guò)getToolkit().getFontList()來(lái)得到系統(tǒng)的AWT工具集所支持的字體列表。如:
Toolkit systk=Toolkit.getDefaultToolkit( );
String fonts=systk.getFontList( );
創(chuàng)建了Font對(duì)象以后,就可以利用Graphics類(lèi)中提供的drawString(),drawChars()等方法來(lái)顯示字符串與字符:
首先用setFont()方法,將創(chuàng)建的Font對(duì)象設(shè)為當(dāng)前所用字體,再用drawString(),drawChars()輸出字符。
格式:public void setFont(Font font); //設(shè)置當(dāng)前字體信息
public void drawString(String str,int x,int y)//在指定位置輸出字符串
public void drawChars(char data[],int offset,int len,int x,int y)//在指定位置輸出字符數(shù)組,offset表示從第幾個(gè)字符位置開(kāi)始,len表示共顯示幾個(gè)字符。
public font getFont()//獲取當(dāng)前所用的Font對(duì)象
11.4 顏色控制
java在Color類(lèi)中實(shí)現(xiàn)對(duì)顏色的控制,可改變前景色和背景色。Java將常用顏色定義為顏色常量,如表11.1 P231,用法如:Color.blue
構(gòu)造方法:
Color(float r,float g,float b)//red,green,blue三原色浮點(diǎn)值,取值在0.0~1.0間
Color(int r,int g,int b)//red,green,blue三原色整數(shù)值,取值在0~255間
Color(int rgb)//指定一個(gè)整數(shù)代表三原色混合值,取值0~7代表藍(lán)色,取值8~15代表綠色,取值16~23代表紅色,(此方法有問(wèn)題,不要用)
11.4.1 為不同對(duì)象設(shè)置顏色
setColor(Color c)//設(shè)置當(dāng)前所用前景色
getColor() //獲得當(dāng)前所用前景色
Java還提供了設(shè)置整個(gè)Applet的前景和背景的方法:
setForeground(Color c)
setBackground(Color c)
getForeground(Color c)
getBackground(Color c)
例:import java.awt.*;
public class SC extends java.applet.Applet{
char c[]={'計(jì)','算','機(jī)','專(zhuān)','業(yè)'};
Font f1=new Font("隸書(shū)",Font.ITALIC,16);
Font f2=new Font("楷體",Font.ITALIC,16);
Color c1=new Color(100,200,150);
public void paint(Graphics g){
g.setFont(f1);
g.setColor(Color.RED);
g.drawString("網(wǎng)絡(luò)專(zhuān)業(yè)",20,30);
g.setColor(c1);
g.setFont(f2);
g.drawChars(c,0,3,20,50);}}
例:import java.awt.*;
public class SC extends java.applet.Applet{
Color c1=new Color(0,0,255);
Color c2=new Color(255,50,100);
Color c3=new Color(0,250,100);
public void paint(Graphics g){
setForeground(c1);
setBackground(c2);
g.drawRect(20,30,50,100);
setForeground(c3); //將影響Applet中所有已經(jīng)用其他任何顏色所繪制的圖形及顯示的文本
setBackground(Color.green);//同上,所以在一個(gè)程序中不要用兩遍引此方法
g.drawRect(20,230,50,100);}}
11.5 圖像處理
11.5.1 圖像種類(lèi)
11.5.2 圖像的顯示
1.載入圖像方法
java.applet.Applet和java.awt.Tookit分別提供了getImage方法載入指定的圖像
格式1:Image getImage(URL url);
要指明圖像文件的絕對(duì)URL。
格式2:Image getImage(URL url,String name);
要指明圖像文件的基地址以及圖像文件名。當(dāng)Applet與圖像文件處于同一目錄下時(shí),可用getCodeBase()獲取基地址,如果圖像與包含Applet的HTML文件在同一目錄下,可用getDocumentBase()獲得基地址。
對(duì)于Application來(lái)說(shuō),必須通過(guò)類(lèi)Toolkit提供的方法getImage()來(lái)載入圖像,其方法定義為:
格式1:Image getImage(URL url);
格式2:Image getImage(String filename)
得到Toolkit對(duì)象有兩種方法:一種是通過(guò)類(lèi)Toolkit的靜態(tài)方法getDefalutToolkit() 如:
Image img=Toolkit.getDefaultToolkit().getImage(“ImgFile.gif”)
另一種是調(diào)用某一組件的實(shí)例方法getToolkit() 如在一組件中使用:
Image img=getToolkit().getImage(“ImgFile.gif”)
2.顯示圖像
(1)boolean drawImage(Image img,int x,int y,ImageObserver observer):img是要顯示的圖像,x,y指明圖像的位置,observer接收有關(guān)圖像的信息。
(2)boolean drawImage(Image img,int x,int y,Color bgcolor,ImageObserver observer): bgcolor為背景色
(3)boolean drawImage(Image img,int x,int y,int width,int height,ImageObserver observer): width,height指明圖像的大小
(4)boolean drawImage(Image img,int x,int y,int width,int height,Corlor bgcolor, ImageObserver observer):
例:import java.applet.*;
import java.net.*; //應(yīng)要使用URL對(duì)象
import java.awt.*;
public class imag extends Applet{
Image image;
public void init() {
String url = "http://www.shu.edu.cn/~xyx/img/shnet.jpg";
try {
image = getImage(new URL(url));
} catch(Exception e){} }
public void paint(Graphics g) {
g.drawImage(image, 0, 0,this); } }
第二種格式完整的程序如下:
import java.applet.*;
import java.net.*;
import java.awt.*;
public class imag2 extends Applet{
Image image;
URL imgur=null;
public void init() {
try { imgur=new URL("http://www.shu.edu.cn/~xyx/img/shnet.jpg"); }
catch (MalformedURLException e) {
System.out.println("Can?t open the URL "); }
image=getImage(imgur); }
public void paint(Graphics g) {
g.drawImage(image, 0, 0,this); } }
11.5.3 圖像的縮放顯示
img=getImage(getCodeBase(),”W.jpg”)
int w=img.getWidth(this); //返回圖像高度
int h=img.getHeight(this); //返回圖像寬度
g.drawImage(img,100,50,w/2,h/2,this); //縮小一倍
11.6 動(dòng)畫(huà)處理
11.7 加載聲音文件
目前Java Applet可以播放聲音,Application則不行
格式1:play(URL soundDirectory,String soundfile)
格式2:play(URL soundURL):URL為存放聲音文件的URL,soundfile為文件名
使用java.applet.Applet類(lèi)中所定義的getAudioClip()方法可以載入一個(gè)聲音文件,方法:格式1:getAudioClip(URL soundDirectory,String soundfile)
格式2:getAudioClip (URL soundURL):
例:AudioClip sound;
sound=getAudioClip(getDocumentBase(),”bar.wav”)
當(dāng)聲音文件被載入后,則可以使用java.applet.AudioClip類(lèi)中相關(guān)方法(play(),loop(),stop())對(duì)其進(jìn)行操作:
sound.play():播放載入的聲音文件
sound.loop():循環(huán)播放一個(gè)載入的聲音文件
sound.stop():停止播放的聲音文件
1.如何將字串 String 轉(zhuǎn)換成整數(shù) int?
A. 有兩個(gè)方法:
1). int i = Integer.parseInt([String]); 或
i = Integer.parseInt([String],[int radix]);
2). int i = Integer.valueOf(my_str).intValue();
注: 字串轉(zhuǎn)成 Double, Float, Long 的方法大同小異.
2 如何將整數(shù) int 轉(zhuǎn)換成字串 String ?
A. 有叁種方法:
1.) String s = String.valueOf(i);
2.) String s = Integer.toString(i);
3.) String s = "" + i;
注: Double, Float, Long 轉(zhuǎn)成字串的方法大同小異.
這是一個(gè)例子,說(shuō)的是JAVA中數(shù)據(jù)數(shù)型的轉(zhuǎn)換.供大家學(xué)習(xí)引
package cn.com.lwkj.erts.register;
import java.sql.Date;
public class TypeChange {
public TypeChange() { }
//change the string type to the int type
public static int stringToInt(String intstr)
{Integer integer;
integer = Integer.valueOf(intstr);
return integer.intValue(); }
//change int type to the string type
public static String intToString(int value)
{Integer integer = new Integer(value);
return integer.toString(); }
//change the string type to the float type
public static float stringToFloat(String floatstr)
{Float floatee;
floatee = Float.valueOf(floatstr);
return floatee.floatValue(); }
//change the float type to the string type
public static String floatToString(float value)
{Float floatee = new Float(value);
return floatee.toString(); }
//change the string type to the sqlDate type
public static java.sql.Date stringToDate(String dateStr)
{return java.sql.Date.valueOf(dateStr); }
//change the sqlDate type to the string type
public static String dateToString(java.sql.Date datee)
{return datee.toString();}
public static void main(String[] args)
{java.sql.Date day ;
day = TypeChange.stringToDate("2003-11-3");
String strday = TypeChange.dateToString(day);
System.out.println(strday);}
}
JAVA中常用數(shù)據(jù)類(lèi)型轉(zhuǎn)換函數(shù)
雖然都能在JAVA API中找到,整理一下做個(gè)備份。
string->byte:Byte static byte parseByte(String s)
byte->string:Byte static String toString(byte b)
char->string:Character static String toString (char c)
string->Short:Short static Short parseShort(String s)
Short->String:Short static String toString(Short s)
String->Integer:Integer static int parseInt(String s)
Integer->String:Integer static String tostring(int i)
String->Long:Long static long parseLong(String s)
Long->String:Long static String toString(Long i)
String->Float:Float static float parseFloat(String s)
Float->String:Float static String toString(float f)
String->Double:Double static double parseDouble(String s)
Double->String:Double static String toString(Double)