AWT(Abstract Windows Toolkit)是抽象窗口工具包的缩写,其支持窗口界面的创建、简单图形的绘制、图形化文本输出和事件监听。Java所有与图形有关的功能都包含在AWT包里。
11.1 基本图形
绘制基本图形要使用AWT中的Graphics类
11.1.1 直线
格式: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相比,画出矩形框后用前景色填充。
public void drawRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight)//最后两个参数代表圆角
public void fillRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight)//用前景色填充内部
public void draw3DRect(int x,int y,int width,int height,boolean raised)//raised为true时为三维矩形凸起, 为false时为三维矩形凹下
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) //用前景色填充内部
如:public void paint(Graphics g)
{g.drawOval(30,20,60,60); //画圆
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张角确定了圆弧的大小,取正(负)值为沿逆(顺)时针方向画出圆弧。当张角大于360时,画出的就是椭圆。
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[]是一整数数组,用以存放多边形坐标点X坐标值,yPoints[]参数存放对应Y坐标值,nPoints则表示 共有几个坐标点。
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则出错
}
11.1.6 复制与清除图形
copyArea(int x,int y,int width,int height,int dx,int dy)//前四能参定义要被复制的屏幕的矩形区域,最后2个参数则表示新区域与原始屏幕区域的偏移距离。
clearRect(int x,int y,int width,int height)//清除指定矩形区域
要清除整个applet区域,可先调用Applet类的size()方法得到整个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 画布
11.2.1 画布的作用
画布(Canvas)是用来绘图的组件,基作用和Windows的画图板类似。Canvas继承自Component类,有自己的paint方法,能响应鼠标和键盘事件。
11.2.2 创建画布的实例
例P228
11.3 文字输出
11.3.1 字符串、字符和字节输出
(1)字符串输出方法:public void drawSting(String str ,int x,int y)
(2)字符输出方法:drawChars(char chars[],int offset,int len,int x,int y)
(3)字节输出方法:drawBytes(byte bytes[],int offset,int len,int x,int y)
11.3.2 字体控制
通过类Graphics或组件的方法getFont()和setFont()可以获取或设置当前使用的字体。
字体构造方法:Font(String name,int style,int size)
name:字体名,如:“宋体”、“楷体”、“Times New Roman”、“Courier”
style:字体风格,如:Font.BOLD(粗体)、Font.ITALIC(斜体)、Font.PLAIN(普通),由于它们被定义为整数常量,可以进行相加运算生成复合style,如:
Font fn=new Font(“TimesRoman”, Font.BOLD+Font.ITALIC,28)
size:字体大小
我们可通过getToolkit().getFontList()来得到系统的AWT工具集所支持的字体列表。如:
Toolkit systk=Toolkit.getDefaultToolkit( );
String fonts=systk.getFontList( );
创建了Font对象以后,就可以利用Graphics类中提供的drawString(),drawChars()等方法来显示字符串与字符:
首先用setFont()方法,将创建的Font对象设为当前所用字体,再用drawString(),drawChars()输出字符。
格式:public void setFont(Font font); //设置当前字体信息
public void drawString(String str,int x,int y)//在指定位置输出字符串
public void drawChars(char data[],int offset,int len,int x,int y)//在指定位置输出字符数组,offset表示从第几个字符位置开始,len表示共显示几个字符。
public font getFont()//获取当前所用的Font对象
11.4 颜色控制
java在Color类中实现对颜色的控制,可改变前景色和背景色。Java将常用颜色定义为颜色常量,如表11.1 P231,用法如:Color.blue
构造方法:
Color(float r,float g,float b)//red,green,blue三原色浮点值,取值在0.0~1.0间
Color(int r,int g,int b)//red,green,blue三原色整数值,取值在0~255间
Color(int rgb)//指定一个整数代表三原色混合值,取值0~7代表蓝色,取值8~15代表绿色,取值16~23代表红色,(此方法有问题,不要用)
11.4.1 为不同对象设置颜色
setColor(Color c)//设置当前所用前景色
getColor() //获得当前所用前景色
Java还提供了设置整个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[]={'计','算','机','专','业'};
Font f1=new Font("隶书",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("网络专业",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中所有已经用其他任何颜色所绘制的图形及显示的文本
setBackground(Color.green);//同上,所以在一个程序中不要用两遍引此方法
g.drawRect(20,230,50,100);}}
11.5 图像处理
11.5.1 图像种类
11.5.2 图像的显示
1.载入图像方法
java.applet.Applet和java.awt.Tookit分别提供了getImage方法载入指定的图像
格式1:Image getImage(URL url);
要指明图像文件的绝对URL。
格式2:Image getImage(URL url,String name);
要指明图像文件的基地址以及图像文件名。当Applet与图像文件处于同一目录下时,可用getCodeBase()获取基地址,如果图像与包含Applet的HTML文件在同一目录下,可用getDocumentBase()获得基地址。
对于Application来说,必须通过类Toolkit提供的方法getImage()来载入图像,其方法定义为:
格式1:Image getImage(URL url);
格式2:Image getImage(String filename)
得到Toolkit对象有两种方法:一种是通过类Toolkit的静态方法getDefalutToolkit() 如:
Image img=Toolkit.getDefaultToolkit().getImage(“ImgFile.gif”)
另一种是调用某一组件的实例方法getToolkit() 如在一组件中使用:
Image img=getToolkit().getImage(“ImgFile.gif”)
2.显示图像
(1)boolean drawImage(Image img,int x,int y,ImageObserver observer):img是要显示的图像,x,y指明图像的位置,observer接收有关图像的信息。
(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.*; //应要使用URL对象
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 动画处理
11.7 加载声音文件
目前Java Applet可以播放声音,Application则不行
格式1:play(URL soundDirectory,String soundfile)
格式2:play(URL soundURL):URL为存放声音文件的URL,soundfile为文件名
使用java.applet.Applet类中所定义的getAudioClip()方法可以载入一个声音文件,方法:格式1:getAudioClip(URL soundDirectory,String soundfile)
格式2:getAudioClip (URL soundURL):
例:AudioClip sound;
sound=getAudioClip(getDocumentBase(),”bar.wav”)
当声音文件被载入后,则可以使用java.applet.AudioClip类中相关方法(play(),loop(),stop())对其进行操作:
sound.play():播放载入的声音文件
sound.loop():循环播放一个载入的声音文件
sound.stop():停止播放的声音文件
1.如何将字串 String 转换成整数 int?
A. 有两个方法:
1). int i = Integer.parseInt([String]); 或
i = Integer.parseInt([String],[int radix]);
2). int i = Integer.valueOf(my_str).intValue();
注: 字串转成 Double, Float, Long 的方法大同小异.
2 如何将整数 int 转换成字串 String ?
A. 有叁种方法:
1.) String s = String.valueOf(i);
2.) String s = Integer.toString(i);
3.) String s = "" + i;
注: Double, Float, Long 转成字串的方法大同小异.
这是一个例子,说的是JAVA中数据数型的转换.供大家学习引
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中常用数据类型转换函数
虽然都能在JAVA API中找到,整理一下做个备份。
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)