認識swing技術

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世界是很奇妙的,有待大家一起去探索

----轉載自停留的風

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章