新手入門:Java Swing的基礎知識全接觸

來源:互聯網
上載者:User

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.Swing入門執行個體:

許多初學java的朋友們在學完java的基礎部分後就會感到很茫然,還是對java能幹什麼不是很瞭解,所以在初步掌握基本的概念後就可以近一步的研究Swing,可以對初學者有一定的提高.下面我們就來初步的研究一個程式,個人覺得是入門Swing的很好的代碼.

//第一部分  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();   }  }  //第二部分      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;  }  //第三部分    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;  }

我把此程式分為3part.每一部分都有注釋,這一段代碼是做什麼用的.一起來分析此程式:

在第一部分

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();   }   }

可以看到我們首先匯入了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;  }

在此我們把我們建立的object繼承java的JFrame類,使他有JFrame的屬性.行為.然後設定標題和大小,再次建立一個新的objectHelloCsdnPanel 這是因為是在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;  }

繼續我們繼承剛建立的HelloCsdnPanel 到JPanel使我們的對象有JPanel的屬性,然後我們才能調用在frame上輸出字元的方法 g.drawString

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

5.自此我們可以看出frame的內部結構:

 ------JFrame(底層)

   |

  ---------JRoot

    |

   ---------JLayeredPane

      |

    -----------菜單條

       |

     -----------內容窗格

        |

      -----------透明窗格(頂層)

而在這6個層中我們最關係的是菜單條和內容窗格.因為它覺定我們的frame是什麼樣的.

總結:可以看出Swing是java很好的表現,怪不得關於Swing的書可以寫成很厚的一本,本章只是教那些初學者,對於java有一個更好的認識,不近近是停留在控制台上的編程.



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.