302班

          java突擊隊
          posts - 151, comments - 74, trackbacks - 0, articles - 14
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          swing技術介紹

          Posted on 2007-06-16 12:53 停留的風 閱讀(1471) 評論(1)  編輯  收藏 所屬分類: Java技術剖析
          1.前言:
                 當我們學習過了java中的基本語法,并且熟悉java的面向對象基礎以后,我們就可以開始簡單的Swing程序的設計,
          用過Vb的朋友可能會被它的簡單的設計用戶界面方法所吸引,只需要拖幾個控件到窗體上,為每個空件編寫event就可以簡單的
          實現界面設計.但是強大的java也不比vb遜色.同樣可以設計出精美的界面.
          2.Swing概述:
                  當java1.0剛剛出現時還沒有swing,當時的GUI基本編程庫,sun取名叫AWT(Abstract Window Tookit),基本AWT庫處理用戶界面
           的方法是將這些元素的創建行為交給,底層操作系統的GUI工具箱進行處理,來實現WORA的目的.而因為種種原因,不同的OS之間
           存在差異,使得AWT界面庫存在許多bug.1996年sun同netscape通力合作創建了新的庫取名Swing.
           ------如果,沒有Swing,java的圖形就面就不名一文.------
           swing是java的基礎類,是JFC的一部分,完整的JFC是很巨大的.包括的組件也很多.
          3.為什么要選擇Swing: Swing具有更豐富而且更加方便的用戶界面元素集合,
                                                Swing對于底層平臺的依賴更少,因此,特殊平臺上的bug會很少
                    Swing會帶來交叉平臺上的統一的視覺體驗
          4.許多初學java的朋友們在學完java的基礎部分后就會感到很茫然,還是對java能干什么不是很了解,所以在初步掌握基本的概念后就可以
           近一步的研究Swing,可以對初學者有一定的提高.
           下面我們就來初步的研究一個程序,個人覺得是入門Swing的很好的代碼.

                        // a simple exmple that can show the basis of swing
          -------------------------------------------------------------------------------------------------------------------------
                       // import pakages which we need
          import javax.swing.*;
          import java.awt.*;
          public class HelloCsdn
          {
           public static void main(String[] args)
           {
            HelloCsdnFrame frame=new HelloCsdnFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.show();
            }
           }
           /**  this part we construct a new frame HelloCsdnFrame
           */
          ---------------------------------------------------------------------------------------------------------------------------
           
          class HelloCsdnFrame extends JFrame{
           public HelloCsdnFrame()
           {
            setTitle("Hello CSDN.NET");
            setSize(WIDTH,HEIGHT);
            HelloCsdnPanel panel=new HelloCsdnPanel();
             Container c=getContentPane();
                 c.add(panel);
           }
           public static final int WIDTH=300;
           public static final int HEIGHT=200;
          }
                  /**this part we extend our HelloCsdnFram to JFrame and construct a new object HelloCsdnPanel and add it on the frame
           /*
          ----------------------------------------------------------------------------------------------------------------------------

          class HelloCsdnPanel extends JPanel{
           public void paintComponent(Graphics g){
            super.paintComponent(g);
            g.drawString("Hello CSDN.NET",MESSAGE_X,MESSAGE_Y);
           }
           public static final int MESSAGE_X=100;
           public static final int MESSAGE_Y=100;
          }
                  /** A panel that display a message
           */
          ---------------------------------------------------------------------------------------------------------------------------
          我把此程序分為3part.每一部分都有注釋,這一段代碼是做什么用的.
          一起來分析此程序: 在第一部分
                       // import pakages which we need
          import javax.swing.*;
          import java.awt.*;
          public class HelloCsdn
          {
           public static void main(String[] args)
           {
            HelloCsdnFrame frame=new HelloCsdnFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.show();
            }
           }
           /**  this part we construct a new frame HelloCsdnFrame
           */
           可以看到我們首先導入了2個包 swing 和 awt,創建了一個object對這個object我們進行實例化,  然后用代碼
                  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.show(); 來實現關閉Frame,但不是結束程序,其中止的只是程序的主線程,
            第二部分:
                  class HelloCsdnFrame extends JFrame{
           public HelloCsdnFrame()
           {
            setTitle("Hello CSDN.NET");
            setSize(WIDTH,HEIGHT);
            HelloCsdnPanel panel=new HelloCsdnPanel();
             Container c=getContentPane();
                 c.add(panel);
           }
           public static final int WIDTH=300;
           public static final int HEIGHT=200;
          }
                  /**this part we extend our HelloCsdnFram to JFrame and construct a new object HelloCsdnPanel and add it on the frame
           /*
          在此我們把我們建立的object繼承java的JFrame類,使他有JFrame的屬性.行為.然后設置標題和大小,再次建立一個新的object
          HelloCsdnPanel 這是因為是在JFrame中實現的所以要建立容器c .把我們建立的panel對象放入container c中.
          第三部分
          class HelloCsdnPanel extends JPanel{
           public void paintComponent(Graphics g){
            super.paintComponent(g);
            g.drawString("Hello CSDN.NET",MESSAGE_X,MESSAGE_Y);
           }
           public static final int MESSAGE_X=100;
           public static final int MESSAGE_Y=100;
          }
                  /** A panel that display a message
           */ 繼續我們繼承剛建立的HelloCsdnPanel 到JPanel使我們的對象有JPanel的屬性,然后我們才能調用在frame上輸出字符的方法
           g.drawString

           由此程序我們一方面可以很好的看出java的核心思想----繼承關系,另一方面可以看出swing的基本構架是什么.
           他有幾個層,每個層實現自己的什么功能.

            5.自此我們可以看出frame的內部結構:
                     ------JFrame(底層)
                            |
                            ---------JRoot
                                 |
                                 ---------JLayeredPane
                                       |
                                        -----------菜單條
                                              |
                                              -----------內容窗格
                                                    |
                                                     -----------透明窗格(頂層)
            而在這6個層中我們最關系的是菜單條和內容窗格.因為它覺定我們的frame是什么樣的.
           總結:可以看出Swing是java很好的表現,怪不得關于Swing的書可以寫成很厚的一本,本章只是教那些初學者,對于java有一個更好的認識,不近近是停留在控制臺上的編程.
           swing世界是很奇妙的,有待大家一起去探索


          評論

          # re: swing技術介紹[未登錄]  回復  更多評論   

          2014-04-28 17:35 by 111
          內容(請不要發表任何與政治相關的內容)

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 衡阳县| 额尔古纳市| 普陀区| 棋牌| 香港| 岳池县| 临武县| 东丰县| 黄平县| 抚州市| 鹤岗市| 峡江县| 富阳市| 泊头市| 左云县| 会东县| 大同县| 富宁县| 双峰县| 花莲市| 灌阳县| 修水县| 酒泉市| 中牟县| 阜城县| 临沭县| 杂多县| 全南县| 天等县| 旬邑县| 阳泉市| 阿拉善左旗| 绥阳县| 彰化市| 左权县| 二连浩特市| 福安市| 炎陵县| 花垣县| 松阳县| 灯塔市|