302班

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

          swing技術(shù)介紹

          Posted on 2007-06-16 12:53 停留的風(fēng) 閱讀(1471) 評論(1)  編輯  收藏 所屬分類: Java技術(shù)剖析
          1.前言:
                 當(dāng)我們學(xué)習(xí)過了java中的基本語法,并且熟悉java的面向?qū)ο蠡A(chǔ)以后,我們就可以開始簡單的Swing程序的設(shè)計,
          用過Vb的朋友可能會被它的簡單的設(shè)計用戶界面方法所吸引,只需要拖幾個控件到窗體上,為每個空件編寫event就可以簡單的
          實(shí)現(xiàn)界面設(shè)計.但是強(qiáng)大的java也不比vb遜色.同樣可以設(shè)計出精美的界面.
          2.Swing概述:
                  當(dāng)java1.0剛剛出現(xiàn)時還沒有swing,當(dāng)時的GUI基本編程庫,sun取名叫AWT(Abstract Window Tookit),基本AWT庫處理用戶界面
           的方法是將這些元素的創(chuàng)建行為交給,底層操作系統(tǒng)的GUI工具箱進(jìn)行處理,來實(shí)現(xiàn)WORA的目的.而因為種種原因,不同的OS之間
           存在差異,使得AWT界面庫存在許多bug.1996年sun同netscape通力合作創(chuàng)建了新的庫取名Swing.
           ------如果,沒有Swing,java的圖形就面就不名一文.------
           swing是java的基礎(chǔ)類,是JFC的一部分,完整的JFC是很巨大的.包括的組件也很多.
          3.為什么要選擇Swing: Swing具有更豐富而且更加方便的用戶界面元素集合,
                                                Swing對于底層平臺的依賴更少,因此,特殊平臺上的bug會很少
                    Swing會帶來交叉平臺上的統(tǒng)一的視覺體驗
          4.許多初學(xué)java的朋友們在學(xué)完java的基礎(chǔ)部分后就會感到很茫然,還是對java能干什么不是很了解,所以在初步掌握基本的概念后就可以
           近一步的研究Swing,可以對初學(xué)者有一定的提高.
           下面我們就來初步的研究一個程序,個人覺得是入門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
           */
           可以看到我們首先導(dǎo)入了2個包 swing 和 awt,創(chuàng)建了一個object對這個object我們進(jìn)行實(shí)例化,  然后用代碼
                  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.show(); 來實(shí)現(xiàn)關(guān)閉Frame,但不是結(jié)束程序,其中止的只是程序的主線程,
            第二部分:
                  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的屬性.行為.然后設(shè)置標(biāo)題和大小,再次建立一個新的object
          HelloCsdnPanel 這是因為是在JFrame中實(shí)現(xiàn)的所以要建立容器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
           */ 繼續(xù)我們繼承剛建立的HelloCsdnPanel 到JPanel使我們的對象有JPanel的屬性,然后我們才能調(diào)用在frame上輸出字符的方法
           g.drawString

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

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


          評論

          # re: swing技術(shù)介紹[未登錄]  回復(fù)  更多評論   

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 盐亭县| 玛曲县| 榆社县| 邵阳县| 永泰县| 娄烦县| 芦山县| 周至县| 出国| 星座| 梁河县| 新兴县| 邵阳市| 江源县| 平遥县| 尖扎县| 蒙山县| 金湖县| 尼勒克县| 连城县| 台东市| 祁阳县| 丹东市| 苗栗市| 鹰潭市| 广汉市| 秦皇岛市| 随州市| 武功县| 依兰县| 瑞昌市| 太康县| 临澧县| 化州市| 白朗县| 澄迈县| 咸宁市| 江山市| 喀喇沁旗| 定兴县| 新巴尔虎右旗|