<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    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
    內容(請不要發表任何與政治相關的內容)

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


    網站導航:
     
    主站蜘蛛池模板: 成人黄18免费视频| 777爽死你无码免费看一二区| 2021国产精品成人免费视频| 亚洲人成亚洲精品| 野花香在线视频免费观看大全| 国产亚洲美日韩AV中文字幕无码成人| 理论亚洲区美一区二区三区| 成全影视免费观看大全二| 亚洲乱妇熟女爽到高潮的片| 日韩一区二区在线免费观看| 无码天堂va亚洲va在线va| 免费大黄网站在线观| 国产日韩精品无码区免费专区国产| 一本色道久久综合亚洲精品| 国产精品视频白浆免费视频| 久久精品国产亚洲av高清漫画| 91手机看片国产永久免费| 亚洲一卡2卡3卡4卡乱码 在线| 日韩a级毛片免费观看| 高潮毛片无遮挡高清免费视频| 亚洲精品国产日韩无码AV永久免费网| 成在人线av无码免费高潮水| 亚洲今日精彩视频| 在线观看免费成人| aa午夜免费剧场| 亚洲欧洲国产精品久久| 毛片免费vip会员在线看| 曰批全过程免费视频免费看| 国产V亚洲V天堂A无码| 国产免费不卡视频| 日本亚洲欧美色视频在线播放| 精品国产日韩亚洲一区| 97av免费视频| 男男gay做爽爽的视频免费| 日韩亚洲变态另类中文| 91在线视频免费看| 一级女人18片毛片免费视频| 亚洲国产美女在线观看| 亚洲成AV人网址| 蜜桃AV无码免费看永久| 免费无码一区二区|