Beans Development Kit (BDK)分析(四) (轉)
設計皮膚
主要介紹BeanBoxFrame提供的主要方法和功能。因為BeanBoxFrame是用了單態,所以使用了大量的靜態成員變數和靜態成員。這樣的好處在於不需要透過傳遞引用來影BeanBoxFrame的功能,而直接透過靜態方法來,避免複雜呼叫中引用傳遞的錯誤。
l private boolean inBeanBox(Component c)用於判斷一個Bean例項是否在BeanBox中:namespace prefix = o ns = "urn:schemas--com::office" />
l public void actionPerformed(ActionEvent evt)操作選單事件
l public void propertyChange( PropertyChangeEvent evt)處理屬性變化中的designMode變化事件
l static void setCurrentComponent(Component focus)設定當前的
l public void run()內部執行緒,用於處理焦點Bean的變化
l private void doSetCurrentFocus(Component focus) 設定當前的焦點Bean
l public void setCustomizer(Customizer c)設定元件的屬性
l public void layoutContainer(Container parent)容器的層管理器
l 對於ToolBox, TopBox, TopWrapper的set/get方法
接著介紹BeanBox,在BDK中,這個作為設計的容器。允許所有的Bean能夠在BeanBox中視覺化的操縱,可以直接使用相關聯的屬性瀏覽器進行屬性的瀏覽和修改。
l public Wrapper getTopWrapper()獲取頂層Wrapper也就使BeanBox
l public synchronized void updateMenuBar(MenuBar bar)根據當前的BeanBox和Bean設定選單條
l private void addMenuItem(BeanBoxFrame frame, Menu m, MenuItem mi)新增選單項
l private synchronized String serFileName( o)為化指定建立標示符
l private void serializeComponent()序列化元件到指定的,實現“serializeComponent”的選單項
l private void makeApplet()實現“makeApplet”的選單項
l private void load()實現“load”的選單項
l private void writeObject(.io.ObjectOutputStream oos) 用於支援序列化
l private void readObject(java.io.ObjectInputStream ois)用於支援序列化
l private void print()用於支援BeanBox內容的列印
l private void loadJar()實現“loadJar”的選單項
l private void cut()支援剪貼簿的cut操作
l private boolean copy()支援剪貼簿的copy操作
l private void paste()支援剪貼簿的paste操作
l private synchronized Wrapper getConnection(Wrapper Wrapper)實現兩個Bean的聯絡
l void doEventHookup(ActionEvent evt)從源到目標建立一個事件聯絡
l private Rectangle getLocalCoordinates(Component c)獲取BeanBox中Bean的位置
l public void mousePressed(MouseEvent evt)支援滑鼠選中事件
l public void mouseReleased(MouseEvent evt)支援滑鼠釋放事件
l public synchronized void mouseDragged(MouseEvent evt)支援滑鼠拖動
l public synchronized void mouseMoved(MouseEvent evt)支援滑鼠移動
l void enuItem(ActionEvent evt)該方法被menuWorkerThread來呼叫處理相應的選單事件
l public void doInsert該方法用於插入一個Bean例項到BeanBox中
l public synchronized void queueMenuItem(ActionEvent evt)用於在處理選單的執行緒中排程選單項同步的執行
l public void run()幫助最小化AWT事件執行緒的任務,防止死鎖
l void startMove(Wrapper child, int x, int y)設定開始移動的位置
l Rectangle getMoveBox(int mx, int my)繪製移動的Bean
l void finishMove(int mx, int my)設定停止移動的位置
l void startResize(Wrapper child, int x, int y, Cursor cursor)設定大小的改變
l Rectangle getResizeBox(int mx, int my)獲取在改變大小的Bean
l void finishResize(int mx, int my)完成大小的變化
l void resetViewMenu()設定選單顯示的狀態
工具欄
ToolBox繼承了Frame類,其主要實現是透過ToolBoxPanel來完成具體的功能。
l void addWithUniqueName(Vector v, String s)
l synchronized void adeansInJar(String jarFile)從Jar檔案載入Bean加入到工具欄中
l synchronized void addBeanClass(String beanClassName)用於登記BeanBox
l public Dimension getPreferredSize()獲取最佳大小
l public void paint(Graphics g)重新繪製顯示
l public void run()使用一個內部執行緒來處理Bean插入到工具欄
l public Vector getLoadedJarInfo()獲取載入Jar檔案的資訊
l private static Vector getJarNames()獲取要載入的Jar檔名
l 實現MouseListener介面的方法
屬性瀏覽器
PropertySheet繼承了Frame類,其主要實現是透過PropertySheetPanel來完成。
l synchronized void setTarget(Wrapper targ)設定要瀏覽的Bean
l void stretch()用於視窗調整時呼叫
l private void doLayout(boolean doSetSize)調整介面的位置
l synchronized void setCustomizer(Customizer c)設定要屬性的Customizer
l synchronized void wasModified(PropertyChangeEvent evt)執行屬性的修改和相關操作(是關鍵的方法)
工具類
為了輔助BDK的功能實現,設計了豐富的工具類,我們將用新的一章來介紹。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-958463/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Beans Development Kit (BDK)分析(五) (轉)Beandev
- Beans Development Kit (BDK)分析(六) (轉)Beandev
- 【java學習】JDK(Java Development Kit)JavaJDKdev
- Houdini Development Kit ( HDK ) VC小記dev
- ADRV9371 + Arria 10 SoC Development Kitdev
- Game Development Methodology for Small Development Teams (轉)GAMdev
- 深入分析 Fiesta Exploit Kit
- DX: Full Screen GUI Development 2 (轉)GUIdev
- Development log - red & black (1) (轉)dev
- Development log - red & black (2) (轉)dev
- (一)spring beansSpringBean
- go-kit 微服務 日誌分析管理 (ELK + Filebeat)Go微服務
- LRAT-2000-KIT特殊故障的分析方法
- game development -- flowGAMdev
- 聯眾升級協議分析 續篇(四) (轉)協議
- Spring自動裝配BeansSpringBean
- 玩轉iOS開發:iOS 10 新特性《Siri Kit》iOS
- macOS Development - Auto LayoutMacdev
- office365 developmentdev
- What is strategy development process?dev
- BW: 80% of development costsdev
- Web Development Job in 4Webdev
- Apache JMeter 5.4.1 Build DevelopmentApacheJMeterUIdev
- STM32 Hardware Developmentdev
- PL/SQL development skill testSQLdev
- Java Development Without SpringJavadevSpring
- 探究 Text Kit 和 Core Text 的前世今生 (Text Kit 篇)
- 上新啦!KIT!
- 上新啦KIT
- 【Spring】Spring原始碼轉Eclipse讀取形式 :spring-beans-groovy ProblemSpring原始碼EclipseBean
- org.springframework.beans.factory.BeanNotOfRequiredTypeException must be of typeSpringFrameworkBeanUIException
- org.springframework.beans簡單解讀SpringFrameworkBean
- SAP Certified Development Consultant SAP NetWeaver 2004 - Application Development Focus ABAPdevAPP
- webpack 開發模式管理 DevelopmentWeb模式dev
- Development Studio 2021,dev
- C/C++ Development LibraryC++dev
- 5 Why Worry About Research and Developmentdev
- 上海聘:Sr. Development Managerdev