熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

JavaBean入門知識

2013-11-23 19:05:02  來源: Java核心技術 

  一般要求

  首先您必須有一個不帶有參數的公用構造器此構造器也應該通過調用各個特性的設置方法來設置特性的缺省值例如

  
     public Fireworks()
  {
  setAutoStart(true);
  setBackground(Colorblack);
  setSpeed();
  setRadius();
  
  
  
  }

  如果 bean 是一個從 javaawtComponent 類繼承而來的可視 bean您就應該為 bean 定義一個缺省的首選大小例如

        public Dimension getPreferredSize()
  {
  return (new Dimension(radius* radius*));
  }
  public Dimension getMinimumSize()
  {
  return getPreferredSize();
  }

  特性

  對於您需要的每個特性您應該有一個帶有匹配公用 getter 和 setter 方法的專用實例變量例如

  
      private int speed;
  
  
  
  public int getSpeed()
  {
  return speed;
  }
  public void setSpeed(int s)
  {
  speed = s;
  }

  此 get 和 set 方法必須有與實例變量相同的名稱但是第一個字母要大寫並以 get 和 set 開頭

  由於連接而在任何時候更改它們的特性時確認 Bean 在運行時行為正確也是很重要的如果特性的更改影響到 Bean 的可視外觀您應該以此特性設置的方法來調用

  repaint();

  同樣如果特性的更改影響到 bean 的大小和位置您需要確認獲得驗證的事物我們建議編寫您自己的 validateAll 方法如下所示

  
      private void validateAll()
  {
  if (isValid())
  {
  Component self = this;
  selfinvalidate();
  Component myParent = selfgetParent();
  if (myParent != null)
  {
  myParentinvalidate();
  self = myParent;
  }
  selfvalidate();
  }
  }

  然後以此特性設置的方法調用

  validateAll();

  bean 類將無法進行關於調用特性設置方法命令的假設您應該寫 bean 以便可以初始構造它然後在不引起錯誤的同時在任何命令中設置其特性

  操作

  對於每個您需要的操作您應該有一個公用方法例如

  
      public void start()
  {
  if(thread==null)
  {
  thread=new Thread(this);
  threadstart();
  }
  }

  您為操作寫的方法應該在無須期待用戶創建連接或設置很多特性的情況下獨立操作 例如如果您寫了一個音頻 Bean您希望通過播放操作處理打開聲音的所有步驟完成您需要的所有設置並播放聲音同樣即使聲音未播放停止操作也應起作用

  事件

  對於您需要的每個事件或事件設置您應該定義事件和偵聽器類對於此例查看 FireworksEventjava 源文件以及 Fireworksjava 文件此事件類的源應該如同這樣 

  
      import javaawt*;
  import javautil*;
  public class FireworksEvent extends EventObject
  {
  public static final int EXPLODED = ;
  int id = ;
  public FireworksEvent(Component source int id)
  {
  super(source);
  thisid = id;
  }
  public int getID()
  {
  return id;
  }
  }

  您應該為此事件設置中的每個事件定義一個公用靜態結束事件標識符例如在此例子中的 EXPLODED

  對於偵聽器類的源查看 FireworksListenerjava 源文件

    
    import javautil*;
  public interface FireworksListener extends EventListener
  {
  public abstract void exploded(FireworksEvent e);
  }

  您應該為此事件設置中的每個事件定義一個公用抽象方法例如在此例子中的 exploded 而且偵聽器類必須擴展 EventListener 以使 JAR 向導能夠找到它

  然後如果由 bean 類播送事件它必須跟蹤偵聽事件的對象要這樣做您需要定義偵聽器實例變量以及 addListener 和 removeListener 方法返回 Fireworksjava 源例如您將查看到

  
     private Vector listeners = new Vector();
  
  
  
  public void addFireworksListener(FireworksListener f)
  {
  listenersaddElement(f);
  }
  public void removeFireworksListener(FireworksListener f)
  {
  listenersremoveElement(f);
  }

  最後bean 類需要以正確的次數將事件實際播送到所有的偵聽器要這樣做您需要定義 processEvent 方法並以適當的次數調用它例如

  
     public void processFireworksEvent(FireworksEvent e)
  {
  for (Enumeration enum = listenerselements(); enumhasMoreElements(); )
  ((FireworksListener)enumnextElement())exploded(e);
  }
  public void run()
  {
  
  
  
  processFireworksEvent(new FireworksEvent(this FireworksEventEXPLODED));
  }


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26241.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.