服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

一个javabeans的关于rtti的问题


  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() ?

扫描关注微信公众号