亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

寫bean類的準則

2019-11-18 12:30:15
字體:
來源:轉載
供稿:網友

  寫 bean 的最好方法是遵循 Sun Microsystems 的 javaBean 規范。您可以在 www.javasoft.com 上獲得更多關于 JavaBean 的信息。
  
  一般的 bean 需求
  特性
  操作
  事件
  提示和竅門
  
  
  一般要求
  首先,您必須有一個不帶有參數的公用構造器。此構造器也應該通過調用各個特性的設置方法來設置特性的缺省值,例如:
  
  public fireworks()
  {
  setAutoStart(true);
  setBackground(Color.black);
  setSpeed(10);
  setRadius(40);
  .
  .
  .
  }
  
  假如 bean 是一個從 java.awt.Component 類繼續而來的可視 bean,您就應該為 bean 定義一個缺省的首選大小,例如: public Dimension getPReferredSize()
  {
  return (new Dimension(radius*3, radius*3));
  }
  
  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;
  self.invalidate();
  Component myParent = self.getParent();
  if (myParent != null)
  {
  myParent.invalidate();
  self = myParent;
  }
  self.validate();
  }
  }
  
  然后以此特性設置的方法調用
  
  validateAll();。
  
  
  bean 類將無法進行關于調用特性設置方法命令的假設。您應該寫 bean 以便可以初始構造它,然后在不引起錯誤的同時在任何命令中設置其特性。
  
  
  操作
  對于每個您需要的操作,您應該有一個公用方法,例如:
  
  public void start()
  {
  if(thread==null)
  {
  thread=new Thread(this);
  thread.start();
  }
  }
  
  您為操作寫的方法應該在無須期待用戶創建連接或設置很多特性的情況下獨立操作。 例如,假如您寫了一個音頻 Bean,您希望通過播放操作處理打開聲音的所有步驟、完成您需要的所有設置并播放聲音。同樣,即使聲音未播放,停止操作也應起作用。
  
  事件
  對于您需要的每個事件或事件設置,您應該定義事件和偵聽器類。對于此例,查看 FireworksEvent.java 源文件以及 Fireworks.java 文件。此事件類的源應該如同這樣:
  
  import java.awt.*;
  import java.util.*;
  
  public class FireworksEvent extends EventObject
  {
  public static final int EXPLODED = 1;
  
  int id = 0;
  
  public FireworksEvent(Component source, int id)
  {
  super(source);
  this.id = id;
  }
  
  public int getID()
  {
  return id;
  }
  }
  
  您應該為此事件設置中的每個事件定義一個公用靜態結束事件標識符,例如在此例子中的 EXPLODED。
  
  對于偵聽器類的源,查看 FireworksListener.java 源文件:
  
  import java.util.*;
  
  public interface FireworksListener extends EventListener
  {
  public abstract void exploded(FireworksEvent e);
  }
  
  您應該為此事件設置中的每個事件定義一個公用抽象方法,例如在此例子中的 exploded。 而且,偵聽器類必須擴展 EventListener ,以使 JAR 向導能夠找到它。
  
  然后,假如由 bean 類播送事件,它必須跟蹤偵聽事件的對象。要這樣做,您需要定義偵聽器實例變量以及 addListener 和 removeListener 方法。返回 Fireworks.java 源,例如,您將查看到:
  
  private Vector listeners = new Vector();
  .
  .
  .
  public void addFireworksListener(FireworksListener f)
  {
  listeners.addElement(f);
  }
  
  public void removeFireworksListener(FireworksListener f)
  {
  listeners.removeElement(f);
  }
  
  最后,bean 類需要以正確的次數將事件實際播送到所有的偵聽器。要這樣做,您需要定義 processEvent 方法并以適當的次數調用它,例如:
  
  public void processFireworksEvent(FireworksEvent e)
  {
  for (Enumeration enum = listeners.elements(); enum.hasMoreElements(); )
  ((FireworksListener)enum.nextElement()).exploded(e);
  }
  
  public void run()
  {
  .
  .
  .
  processFireworksEvent(new FireworksEvent(this, FireworksEvent.EXPLODED));
  }
  
  
  提示和竅門
  假如您要創建產品級 Bean,請記住先做八件事:
  
  使 bean 越小越好,但要注重當前的瀏覽器是否支持小 bean
  bean 或許導致工具滯后,繼而導致瀏覽器滯后,最終導致 JDK 自身滯后。假如您必須使用切邊的類,或者 bean 的性質要求 bean 較大,則您應該考慮將您的 bean 作為一個插件, 并在一個自包含 jar 中發送它,或者如有可能,使它具有自己的小安裝過程。您將失去某些小 bean 的優勢:
  
  Web 治理員必須多執行一個步驟:提醒用戶在瀏覽 Web 頁面之前必須先下載和安裝您的 jar 或安裝程序
  網上沖浪者也必須多執行一個步驟:在瀏覽 Web 頁面之前先下載和安裝您的 jar 或安裝程序。
  
  
  使您的 bean 可翻譯
  將所有的翻譯文本,包括名稱和 bean 的簡短描述及其特征,分隔成 .properties 文件。JAR 向導會為您做這些。
  
  您需要記住并自己完成的兩件事是:特性編輯器和定制器。定制器、對話框特性編輯器或選擇特性編輯器中的所有術語,例如高、中、低,也必須為翻譯而分隔。 理想情況下,您也可以實際翻譯 bean 并在 Bean 的 jar 中提供各種語言的 .properties 文件。 然而,假如您至少提供了本地語言 .properties 文件,則第三方可為您翻譯 bean。
  
  
  在文件清單中為 bean 指定 Depends-On: 標記
  將 Bean 的 jar 中的所有文件標識為“運行時需要 vs. 只在編輯時需要”。在運行時需要的所有文件將列示在 jar 清單文件的依靠于:標簽后。JAR 向導的發布標簽使這個操作很簡單,并使您獲得清單文件權。
  
  假如您不指定依靠于:標簽,工具將假設所有文件都是在運行時需要。這對于下載性能(例如不必要地下載特性編輯器和其它只在編輯時需要的文件)是很不好的。
  
  
  賦予您的 bean 一個明確的首選大小
  bean 將實現 getPreferredSize 方法,以便當首次用可能未定義的要害字特性構造時,它的表現良好。 假如在第一次放入時,bean 是 0 x 0 象素,那么用戶可能會混淆。 當更改要害字特性時,首選大小也應正常工作。例如,假如 bean 有一個在垂直和水平方位間轉換的特性,則首選大小應被寫入以相應地調整自身。
  
  
  為 bean 指定缺省特性
  利用 JavaBean 規范中的缺省特性部分,它將使您的 bean 在某些工具中易于使用。 JAR 向導使這個操作變得簡單并為您獲得 BeanInfo 權。
  
  
  為 bean 及其特性指定簡要的非技術名稱和簡短描述
  尋找簡要的非技術名來代替冗長的技術術語。例如,用 sum interval 代替 accumulatorInterval。還請注重,特性名的首選項以小寫表示并在字與字間留有空格,這對于用戶將更友好。
  
  
  縮小用戶可見的特性范圍
  為 bean 提供一個明確的 BeanInfo 以便不將每個實例變量都顯示為 bean 的特性,而且不將每個方法顯示為 Bean 的操作。 JAR 向導使這個操作變得簡單并為您獲得 BeanInfo 權。
  
  
  為 bean 指定大圖標和小圖標
  最后,為 Bean 提供大的(32x32)和小的(16x16)彩色圖標。而且,確保圖標有一個不同于灰色的透明背景。盡管很少使用,您也應養成提供黑色和白色圖標的習慣。JAR 向導的調色板 標簽使這個操作變得簡單,并使您獲得 BeanInfo

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲va码欧洲m码| 亚洲欧美国产一区二区三区| 精品国产视频在线| 久热99视频在线观看| 欧美性资源免费| 日韩人体视频一二区| 国产精品极品尤物在线观看| 亚洲精品中文字幕女同| 国产97在线视频| 亚洲午夜精品久久久久久久久久久久| 欧美国产精品va在线观看| 色综合久久中文字幕综合网小说| 欧美激情亚洲自拍| 国模吧一区二区三区| 亚洲福利在线播放| 92福利视频午夜1000合集在线观看| 久久视频国产精品免费视频在线| 欧美精品videos另类日本| 中文国产亚洲喷潮| 国内精品美女av在线播放| 欧美成人黄色小视频| 孩xxxx性bbbb欧美| 少妇激情综合网| 日韩视频在线免费| 国模极品一区二区三区| 日韩av电影手机在线| 九色精品免费永久在线| 美日韩精品免费观看视频| 亚洲国产精品电影在线观看| 91国语精品自产拍在线观看性色| 日韩欧美在线网址| 成人h视频在线| 亚洲午夜未满十八勿入免费观看全集| 亚洲精品网站在线播放gif| 欧美国产在线视频| 欧美丰满少妇xxxx| 久久精品国产69国产精品亚洲| 91久久精品在线| 日韩免费黄色av| 91视频免费在线| 久久免费视频在线观看| 成人两性免费视频| 91久久精品日日躁夜夜躁国产| 国产精品欧美日韩| 日韩欧美黄色动漫| 精品久久久久久久久久久久| 亚洲成人激情视频| 久久艹在线视频| 伊人男人综合视频网| 亚洲美女免费精品视频在线观看| 亚洲一区二区在线| 国产欧美一区二区三区视频| 欧洲成人在线视频| 亚洲日本中文字幕免费在线不卡| 欧美老少做受xxxx高潮| 日韩美女视频免费看| 国产999在线观看| 国产精品夜间视频香蕉| 国产精品久久久久999| 精品视频久久久久久| 色综久久综合桃花网| 欧美电影免费播放| 中文字幕亚洲欧美日韩2019| 国产一区二区三区毛片| 成人福利在线观看| 亚洲综合视频1区| 久久久久久欧美| 日韩欧美在线视频观看| 精品国产区一区二区三区在线观看| 中文精品99久久国产香蕉| 亚洲a在线播放| 中文字幕在线看视频国产欧美在线看完整| 成人深夜直播免费观看| 国产精品第七影院| 久久香蕉精品香蕉| 国产精品无码专区在线观看| 国产亚洲激情视频在线| 欧美精品videosex性欧美| 人体精品一二三区| 日韩精品免费在线| 久久福利网址导航| 久久影视电视剧免费网站清宫辞电视| 91po在线观看91精品国产性色| 成人h视频在线观看播放| 亚洲精品乱码久久久久久按摩观| 日本成人精品在线| 精品国产91久久久| 精品亚洲一区二区三区四区五区| 亚洲人成电影在线播放| 日韩免费看的电影电视剧大全| 欧美电影在线观看高清| 免费91麻豆精品国产自产在线观看| 51ⅴ精品国产91久久久久久| 欧美日韩美女在线| 亚洲一区二区三区毛片| 亚洲高清久久网| 欧美孕妇毛茸茸xxxx| 亚洲精品自拍偷拍| 奇米4444一区二区三区| 亚洲精品午夜精品| 日韩av色在线| 亚洲影影院av| 国产午夜精品一区理论片飘花| 欧美性猛交xxxx乱大交| 97香蕉超级碰碰久久免费的优势| 91国语精品自产拍在线观看性色| 久久综合电影一区| 欧美性生活大片免费观看网址| 另类少妇人与禽zozz0性伦| 亚洲大胆人体视频| 国产欧美在线视频| 亚洲精品美女免费| 欧美老肥婆性猛交视频| 精品视频久久久久久久| 国产丝袜一区二区三区免费视频| 中文字幕成人精品久久不卡| 亚洲人成网7777777国产| 成人观看高清在线观看免费| 日韩欧美国产成人| 久久久国产91| 亚洲免费福利视频| 欧美日韩亚洲精品一区二区三区| 日韩免费观看在线观看| 欧美成人精品一区二区三区| www.亚洲一区| 国产欧美精品va在线观看| 亚洲美女av在线播放| 亚洲大胆人体av| 国产精品免费一区二区三区都可以| 国产精品美女呻吟| 国产精品美女www爽爽爽视频| 在线观看久久久久久| 欧美日韩国产一区在线| 欧美日韩国产中文精品字幕自在自线| 久久伊人免费视频| 欧美—级a级欧美特级ar全黄| 亚洲第一网站免费视频| 国产91在线高潮白浆在线观看| 日韩精品丝袜在线| 欧美在线一级视频| 久久久女人电视剧免费播放下载| 久久福利视频网| 亚洲高清福利视频| 亚洲一区二区免费在线| 国产成人啪精品视频免费网| 日韩av网站导航| 亚洲国产精品电影在线观看| 亚洲无线码在线一区观看| 国产精品91免费在线| 91香蕉嫩草神马影院在线观看| 中文字幕精品在线| 麻豆乱码国产一区二区三区| 欧美激情中文字幕乱码免费| 久久综合国产精品台湾中文娱乐网| 中文字幕亚洲自拍| 国产精品激情av在线播放| 久久网福利资源网站| 久久久久久久久久久网站| 日韩激情av在线免费观看| 高清在线视频日韩欧美| 久久久久久18| 国产精品久久久久久久美男| 中文字幕日韩专区| 91tv亚洲精品香蕉国产一区7ujn|