知ing

Java语言程序设计(第三版)

邵丽萍,邵光亚,张后扬 编 / 清华大学出版社

拼命菇凉@ 上传

查看本书

 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)
  
  
  
  

查看更多