當前位置:編程學習大全網 - 圖片素材 - Swing框架中設計模式的誤用

Swing框架中設計模式的誤用

 Swing控件是改善為了AWT控件而發展出來的輕量級GUI控件 采用的是Composite設計模式 然而 由於沒有清楚的分隔組件(Component)和容器(Container)的邊界 就造成了Swing的幾乎每個單獨的組件都是壹個容器 能夠添加其他容器或者組件 看似強大的功能實際上造成了大量的問題

  和人的直覺非常不壹致 Swing的GUI上的各種組件如果添加的面板過多的話 就造成各個組件的層次很深 處理類似focus管理這樣的問題就很麻煩 坐標的轉換也很復雜 由於父子關系過多 您不看代碼只看GUI 憑直覺難以區分組件的父子關系

  使用上的困擾 Swing組件本身由於不能分清是組件還是容器 很多容器方法比如setEnabled就沒有效果 需要寫代碼遍歷所有子組件 調用所有的子組件相同的方法 而類似設置透明的方法也有這個問題 如果設置某個容器透明 也需要設置所有的子組件的透明屬性 組件和容器的很多方法沒有很好的定義 這對了解Swing結構的人不是問題 但是對於熟悉別的GUI類庫的人就產生了很大的困惑 因為不少容器上的方法調用後是沒有效果的

  布局上的困難 使用Swing開發界面的程序員會發現 即使Swing提供了這麽多布局管理器 然而您想通過這些布局管理器做出很專業的界面卻非常難 因為布局管理器非常依賴父容器和子組件的各種狀態 盡管Swing最新的版本提供了類似組件和容器間隔的方法 然而還沒有被大部分布局管理器采用 其實並不是布局管理器不夠強大的問題 事實上 很多專業的界面需要從組件級別做出良好的定義 例如getPreferredSize getMinimumSize getMaximumSize方法 這些方法的不確定性很強 布局管理器不能過度依賴這些方法 另外 不少Swing組件會根據容器的大小進行繪制 這也造成了很多不確定性 很多人喜歡使用NullLayout 可能就是這個原因 客戶需要的是壹個穩定的 可預知的界面 如果使用了布局管理器 會發現界面在不同的系統下展示的不同

 而對比不少GUI類庫 您會發現他們的定義更為嚴格 比方JavaME LCDUI類庫 組件和容器是嚴格分開的 組件的添加是嚴格限制的 布局也是定義的非常嚴格的 沒有布局管理器 類似滾動條這些支持都在底層進行了隱藏 真正減少了GUI開發者的負擔

lishixinzhi/Article/program/Java/hx/201311/26380

  • 上一篇:安卓版養成類遊戲求推薦
  • 下一篇:仙落凡塵什麽職業好 仙落凡塵各職業詳解
  • copyright 2024編程學習大全網