1. 程式人生 > >淺談JFrame

淺談JFrame

引子:

元件容器框架三者區別:

元件:是一個具有完備功能的服務接口,可以使用元件去構建一個系統。比如要編寫一個計算器的系統,你可以找到加法、減法、乘法、除法的元件。只要給他們合適的引數就能為你返回結果。你搭建系統的時候只要使用這幾個元件就行了。
容器:是指符合一定的規範能提供一系列服務的管理器,方便別人使用它來完成一系列的功能例如tomcat,使用tomcat可以提供servlet.jsp等服務,俗稱叫servlet伺服器,在伺服器中會有相關的容器,servlet容器可以呼叫servlet和jsp動態生成html。

框架:是構成一類特定軟體可複用設計的一組
相互協作的類,框架規定了你的應用程式的體系結構。它定義了整體結構,類和物件的分割,各部分的主要責任,類和物件怎麼協作,以及控制流程。

正文:

JFrame定義:

  Swing的三個基本構造塊:標籤、按鈕和文字欄位;但是需要個地方安放它們,並希望使用者知道如何處理它們。JFrame類就是解決這個問題的——它是一個容器,允許程式設計師把其他元件新增到它裡面,把它們組織起來,並把它們呈現給使用者。JFrame實際上不僅僅讓程式設計師把元件放入其中並呈現給使用者。比起它表面上的簡單性,它實際上是 Swing包中最複雜的元件。為了最大程度地簡化元件,在獨立於作業系統的 Swing 元件與實際執行這些元件的作業系統之間,JFrame 起著橋樑的作用。JFrame 在本機作業系統中是以視窗的形式註冊的,這麼做之後,就可以得到許多熟悉的作業系統視窗的特性:最小化/最大化、改變大小、移動。

問題:

    我們可以在 JFrame 物件中新增 AWT 或者 Swing 元件。但是,雖然它有 add 方法,卻不能直接用於新增元件,否則會丟擲異常——不信就試試。

解釋:

       JFrame不是一個容器,它只是一個框架。(實際在開發中)

JFrame如何新增元件:

    JFrame有一個ContentPane,視窗能顯示的所有元件都是新增在這個ContentPane中。到這裡新的問題來了:什麼是ContentPane呢?其實ContentPane是一個容器,它包含了所有的框架(除了選單欄
)。每個JFrame的ContentPane都有包含了這個視窗所能顯示的所有元件。JFrame提供兩個方法:g
etContentPane和SetContentPane 就是用於獲取和設定其 ContentPane 的。

對JFrame新增元件有兩種方式:
  1)用getContentPane()方法獲得JFrame的內容面板,再對其加入元件:
JFrame jf = new JFrame("myJFrame");
Container c = jf.getContentPane();//建立一個容器,方便向框架內新增元件
c.add(你所想新增的東西);

   2)建立一個Jpanel或JDesktopPane之類的中間容器,把元件新增到容器中,用setContentPane()方法把該容器置為JFrame的內容面板:
JPanel  contentPane=new  JPanel();
……//把其它元件新增到Jpanel中;
JFrame.setContentPane(contentPane);
//把contentPane物件設定成為JFrame的內容面板

JFrame類的用法:

1、 JFrame()——建立一個無標題的視窗。
2、 JFrame(String s)——建立一個標題為s的視窗。
3、public void setBounds(int a,intb,int width,int heigth)
4、public void setSize(int width,int heigth)
5、public void setLocation(int x,int y)
6、public void setVisible(boolean b)
7、public void setResizable(boolean b)
8、public void setDefaultCloseOperation(int operation) ——其中的引數operation取下列有效值:
DO_NOTHING_ON_CLOSE //什麼也不做
HIDE_ON_CLOSE //隱藏當前視窗
DISPOSE_ON_CLOSE //隱藏當前視窗,並釋放窗體所佔有的其它資源
EXIT_ON_CLOSE // 結束窗體所在的應用程式
這4個常量都是JFrame類中的int型別,單擊關閉圖示後,程式根據operation取值做出不同的處理。