JAVA程序 求注解 新手 越详细越好 谢谢了。

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class WBApplet extends Applet{

final static int DEFAULT_BOARDWIDTH=800;
final static int DEFAULT_BOARDHEIGHT=400;

public void init(){
whiteBoard = new WhiteBoard(this);
whiteBoard.reshape(40,40,DEFAULT_BOARDWIDTH,DEFAULT_BOARDHEIGHT);
add(whiteBoard);
}

WhiteBoard whiteBoard;

}
class WhiteBoard extends Canvas implements MouseMotionListener,MouseListener{

final static int DEFAULT_BOARDWIDTH=700;
final static int DEFAULT_BOARDHEIGHT=400;
int x0,y0,x1,y1;

WhiteBoard(WBApplet WBApllet1){
parent =WBApllet1;
off_screen_buf =parent.createImage(DEFAULT_BOARDWIDTH,DEFAULT_BOARDHEIGHT);
off_screen_gc = off_screen_buf.getGraphics();
addMouseMotionListener(this);
addMouseListener(this);
}

synchronized public void update_buffer(Graphics g,DrawItem data) {
g.drawLine(data.x0,data.y0,data.x1,data.y1);
}

public void mouseMoved(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseClicked(MouseEvent e){}

public void mouseDragged(MouseEvent e){
x1=e.getX();
y1=e.getY();
Graphics g = getGraphics();
update_buffer(g,new DrawItem(x0,y0,x1,y1));
update_buffer(off_screen_gc,new DrawItem(x0,y0,x1,y1));
g.dispose();
x0=x1;
y0=y1;
}

public void mousePressed(MouseEvent e){
x0 =e.getX();
y0 =e.getY();
}

public void paint(Graphics g){
copy_from_offscreen_buf(g);//把这句话屏蔽掉,就不能恢复用户绘制的图形了
}

void copy_from_offscreen_buf(Graphics g){
if(g != null)
g.drawImage(off_screen_buf, 0, 0, null);
}

private Image off_screen_buf;
private Graphics off_screen_gc;
WBApplet parent;

}

class DrawItem{
DrawItem(int x0,int y0,int x1,int y1){
this.x0=x0;
this.y0=y0;
this.x1=x1;
this.y1=y1;
}
int x0;
int y0;
int x1;
int y1;
}

是个画板程序。如果还要添加直线 矩形 如何操作。

package edu.xmut.t1201;

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

/**
* Applet实现类 定义一个类,他继承自Applet类
*
* @author Administrator
*
*/
public class WBApplet extends Applet
{
/*
* 定义个宽度的常量
*/
final static int DEFAULT_BOARDWIDTH = 800;
/*
* 定义个高的常量
*/
final static int DEFAULT_BOARDHEIGHT = 400;

public void init() //重写init方法,init方法会在applet启动时自动运行
{
whiteBoard = new WhiteBoard(this); //WhiteBoard类初始化
whiteBoard.reshape(40, 40, DEFAULT_BOARDWIDTH, DEFAULT_BOARDHEIGHT);
//移动组件并调整其大小,使其符合新的有界矩形 r。由 40 和 40 指定组件的新位置,由常量 指定组件的新大小(该方法果实,建议用setBounds)
add(whiteBoard); //把该组件添加到applet中
}

WhiteBoard whiteBoard; //定义一个whiteBoard类

}

/*
* 继承自Canvas 的组件类WhiteBoard, 表示屏幕上一个空白矩形区域,应用程序可以在该区域内绘图,或者可以从该区域捕获用户的输入事件。
*
* 应用程序必须为 Canvas 类创建子类,以获得有用的功能(如创建自定义组件)。必须重写 paint 方法,以便在 canvas 上执行自定义图形。
*/
class WhiteBoard extends Canvas implements MouseMotionListener, MouseListener
{
/*
* 定义个宽度的常量
*/
final static int DEFAULT_BOARDWIDTH = 700;
/*
* 定义个高的常量
*/
final static int DEFAULT_BOARDHEIGHT = 400;

int x0, y0, x1, y1;
/* 构造函数
* 他会先调用Canvas类的无参的构造方法
* @param WBApllet1
*/
WhiteBoard(WBApplet WBApllet1)
{
parent = WBApllet1; //WBApllet1参数是传入的父组件
off_screen_buf = parent
.createImage(DEFAULT_BOARDWIDTH, DEFAULT_BOARDHEIGHT); //在父组件上穿件一块空白的区域,大小为常量
off_screen_gc = off_screen_buf.getGraphics();
addMouseMotionListener(this); //用于监听鼠标点击动作,包括左键右键的监听器
addMouseListener(this); //用于监听鼠标移动的监听器
}
/*
* 一个同步的画线方法
*/
synchronized public void update_buffer(Graphics g, DrawItem data)
{
g.drawLine(data.x0, data.y0, data.x1, data.y1); //从x0 y0 画到 x1 y1
}

public void mouseMoved(MouseEvent e)
{
}

public void mouseReleased(MouseEvent e)
{
}

public void mouseEntered(MouseEvent e)
{
}

public void mouseExited(MouseEvent e)
{
}

public void mouseClicked(MouseEvent e)
{
}

public void mouseDragged(MouseEvent e)
{
x1 = e.getX(); //获得鼠标拖动的坐标
y1 = e.getY();
Graphics g = getGraphics();
update_buffer(g, new DrawItem(x0, y0, x1, y1)); //给update_buffer方法传入 一个图形对象,已经自己定义起点和终点的类
update_buffer(off_screen_gc, new DrawItem(x0, y0, x1, y1)); //吧当前屏幕的图形对象传为参数传入update_buffer方法
g.dispose(); //去除g对象
x0 = x1; //本次的 终点坐标为下次的起始坐标
y0 = y1;
}

public void mousePressed(MouseEvent e)
{
x0 = e.getX(); //当鼠标点下,取得该点的位置
y0 = e.getY();
}

public void paint(Graphics g)
{
copy_from_offscreen_buf(g);// 把这句话屏蔽掉,就不能恢复用户绘制的图形了
}

void copy_from_offscreen_buf(Graphics g)
{
if (g != null)
g.drawImage(off_screen_buf, 0, 0, null);
}

private Image off_screen_buf;
private Graphics off_screen_gc;
WBApplet parent;

}
/*
* 记录起始点与结束点的类
*/
class DrawItem
{
DrawItem(int x0, int y0, int x1, int y1)
{
this.x0 = x0;
this.y0 = y0;
this.x1 = x1;
this.y1 = y1;
}

int x0;
int y0;
int x1;
int y1;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-01
建议你找一份API 然后查相关方法,Griphics类里很多方法! 这一步必须要自己动手!
第2个回答  2010-12-02
自己查看API,学习才有效率啊