package frogbean;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
/**
* 在此处插入类型说明。
* 创建日期:(2002-5-6 17:02:28)
* @author:administrator
*/
public class bangbean extends canvas implements serializable {
protected int xm,ym;
protected int csize=20;//circle size
protected string text="bang!";
protected int fontsize=48;
protected color tcolor=color.red;
protected actionlistener actionlistener;
class ml extends mouseadapter{
public void mousepressed(mouseevent e){
graphics g=getgraphics();
g.setcolor(tcolor);
g.setfont(new font("timesroman",font.bold,fontsize));
int width=g.getfontmetrics().stringwidth(text);
g.drawstring(text,xm,ym);
g.dispose();
//call the listener's method:
if(actionlistener!=null)
actionlistener.actionperformed(new actionevent(bangbean.this,actionevent.action_performed,null));
}
}
class mml extends mousemotionadapter{
public void mousemoved(mouseevent e){
xm=e.getx();
ym=e.gety();
repaint();
}
}
/**
* bangbean 构造子注解。
*/
public bangbean() {
addmouselistener(new ml());
addmousemotionlistener(new mml());
}
public void addactionlistener(actionlistener l) throws toomanylistenersexception {
if(actionlistener!=null)
throw new toomanylistenersexception();
actionlistener=l;
}
public string getbeantext(){return text;}
public int getcirclesize(){return csize;}
public int getfontsize(){return fontsize;}
public dimension getpreferredsize(){
return new dimension(200,200);
}
public color gettextcolor(){return tcolor;}
//testing the bangbean:
public static void main(string[] args){
bangbean bb=new bangbean();
try{
//during testing, send action information to the console:
bb.addactionlistener(
new actionlistener(){
public void actionperformed(actionevent e){
system.out.println("bangbean action");
}
}
);
}catch(toomanylistenersexception e){}
frame f=new frame("bangbean test");
f.addwindowlistener(
new windowadapter(){
public void windowclosing(windowevent e){
system.exit(0);
}
}
);
f.add(bb,borderlayout.center);
f.setsize(300,300);
f.setvisible(true);
}
public void paint(graphics g){
g.setcolor(color.black);
g.drawoval(xm-csize/2,ym-csize/2,csize,csize);
}
public void removeactionlistener(actionlistener l){
actionlistener=null;
}
public void setbeantext(string newtext){text=newtext;}
public void setcirclesize(int newsize){csize=newsize;}
public void setfontsize(int newsize){fontsize=newsize;}
public void settextcolor(color newcolor){tcolor=newcolor;}
}
以上是bean类
下面用ibm visual age for java 自动生成调试代码,测试上边的bean
package frogbean;
import java.applet.*;
import java.awt.*;
/**
* 在此处插入类型说明。
* 创建日期:(2002-5-6 21:44:50)
* @author:administrator
*/
public class testbean extends applet {
private bangbean ivjfirst = null;
/**
* 返回关于此 applet 的信息。
* @return 返回关于此 applet 信息的字符串。
*/
public string getappletinfo() {
return "testbean/n" +
"/n" +
"在此处插入类型说明。/n" +
"创建日期:(2002-5-6 21:44:50)/n" +
"@author:administrator/n" +
"";
}
/**
* 返回 first 特性值。
* @return frogbean.bangbean
*/
/* 警告:此方法将重新生成。 */
private bangbean getfirst() {
if (ivjfirst == null) {
try {
ivjfirst = new frogbean.bangbean();
ivjfirst.setname("first");
ivjfirst.setbounds(94, 18, 200, 200);
// user code begin {1}
// user code end
} catch (java.lang.throwable ivjexc) {
// user code begin {2}
// user code end
handleexception(ivjexc);
}
}
return ivjfirst;
}
/**
* 每当部件抛出异常时被调用
* @param exception java.lang.throwable
*/
private void handleexception(java.lang.throwable exception) {
/* 除去下列各行的注释,以将未捕捉到的异常打印至 stdout。 */
// system.out.println("--------- 未捕捉到的异常 ---------");
// exception.printstacktrace(system.out);
}
/**
* 初始化 applet。
*
* @see #start
* @see #stop
* @see #destroy
*/
public void init() {
try {
super.init();
setname("testbean");
setlayout(null);
setsize(426, 240);
add(getfirst(), getfirst().getname());
// user code begin {1}
// user code end
} catch (java.lang.throwable ivjexc) {
// user code begin {2}
// user code end
handleexception(ivjexc);
}
}
/**
* 主入口点 - 当部件作为应用程序运行时,启动这个部件。
* @param args java.lang.string[]
*/
public static void main(java.lang.string[] args) {
try {
frame frame = new java.awt.frame();
testbean atestbean;
class iicls = class.forname("frogbean.testbean");
classloader iiclsloader = iicls.getclassloader();
atestbean = (testbean)java.beans.beans.instantiate(iiclsloader,"frogbean.testbean");
frame.add("center", atestbean);
frame.setsize(atestbean.getsize());
frame.addwindowlistener(new java.awt.event.windowadapter() {
public void windowclosing(java.awt.event.windowevent e) {
system.exit(0);
};
});
frame.setvisible(true);
} catch (throwable exception) {
system.err.println("java.applet.applet 的 main() 中发生异常");
exception.printstacktrace(system.out);
}
}
/**
* 绘制 applet。
* 如果此 applet 不需要绘制(例如,如果它只是其它
* awt 部件的一个容器),则可以安全地除去此方法。
*
* @param g 指定的“图形”窗口
* @see #update
*/
public void paint(graphics g) {
super.paint(g);
//在此处插入用来绘制 applet 的代码。
}
}
其中
testbean atestbean;
class iicls = class.forname("frogbean.testbean");
classloader iiclsloader = iicls.getclassloader();
atestbean = (testbean)java.beans.beans.instantiate(iiclsloader,"frogbean.testbean");
是做什么用的?为什么不直接用
testbean atestbean=new testbean() ?
闽公网安备 35060202000074号