聽雨軒

          不論你在什么時候開始,重要的是開始之后就不要停止。 不論你在什么時候結束,重要的是結束之后就不要悔恨。

          統計

          留言簿(3)

          閱讀排行榜

          評論排行榜

          Java圖形用戶界面---AWT的介紹

          圖形用戶界面 (GUI) 可以通過鍵盤或鼠標來響應用戶的操作, Java 提供了 AWT Swing 兩個包進行圖形用戶界面編程。 AWT 是一組 Java 類,此組 Java 類允許創建圖形用戶界面 (GUI) AWT 提供用于創建生動而高效的 GUI 的各種組件。 AWT Swing 的基礎,但是 AWT 仔圖形組件的繪制方面并不是完全的“平臺獨立”; Swing 是一個帶有豐富組件的 GUI 工具包,它組成了 JFC 的用戶界面功能的核心部分。 AWT 的基本思想使:以面向對象的方法實現了一個跨平臺的 GUI 工具集,提供了各種用于 GUI 設計的標準組件。大致上可以將這些類歸納為:圖形界面組件、事件處理對象、圖形和圖像工具和布局管理器。

          容器類( Container Component 類的子類,容器組件是一種特殊的組件,它的功能是包含其他基本的 GUI 組件。 即容器是可以存放組件的區域,可在容器上進行繪制和著色 java.awt 包中的 Container 類可直接或間接派生出兩個常用容器:框架( Frame 類)和面板( Panel 類)。框架是一個帶有邊框的獨立的窗口。面板是包含在窗口中的一個不帶邊框的區域。 Panel 沒有具體的圖形表示,但它卻是實現 GUI 結構化的一個至關重要的組件,通常用它來實現 GUI 基本組件的組合。

          框架 Frame 創建的窗口式獨立于 Applet 和瀏覽器的可獨立運行的主窗口,通常用于開發桌面應用程序。它定義了一個包含標題條、系統菜單欄最大化 / 最小化按鈕及可選菜單條的完整窗口。當一個Frame窗口被創建以后,需要調用setSize()方法來設置窗口的大小,并調用setVisible()來顯示窗口。Frame默認的布局管理器是BorderLayout,默認的添加組件位置是BorderLayout.CENTER

          面板 Panel 面板不是一個單獨的窗口,它只是包含在窗口中的一個區域。面板是可以將許多組件組合起來的一種容器。最簡單創建面板的方式就是通過面板的構造函數 Panel() 來進行。必須將面板添加到窗體中。 Applet 的缺省布局是 FlowLayout 在沒有設置新的布局前,在容器中添加組件都按照該容器的缺省布局排列。 Applet 繼承自 Panel ,所以可以推斷 Panel 的默認布局管理器是 FlowLayout ,所以向其中添加組件的順序是自左向右,自上向下。

          對話框 Dialog 也是一種容器,其默認的布局管理器是 BorderLayout 。有模式( model )和非模式( modeless )兩種,模式對話框只讓應用程序響應對話框內的事件而其他窗體中的事件則不能響應;而非模式對話框則可以響應其他窗體中的事件。

          布局管理器: AWT 中每個組件在容器中都應該有一個具體的位置和大小,我們想在容器中排列若干個組件時,會很難控制它們的大小和位置。為了簡化編程者對容器上的組件的布局控制,一個容器內的所有組件的顯示位置可以由一個 布局管理器 來管理,我們可以為容器指定不同的布局管理器,在不同的布局管理器下,同一組件將會有不同的顯示效果,并且我們不能完全按自己的意愿設置組件的大小和位置了。

          ??? 為了我們生成的圖形用戶界面具有良好的平臺無關性,
          java 語言中提供了布局管理器這個工具來管理組件在容器中的布局,當容器需要對某個組件進行定位或判斷其大小尺寸時就會調用其布局管理器。所有布局都實現 LayoutManager 接口。

          Java 中的布局類型包括以下幾種: FlowLayout (流式布局); BorderLayout (邊界布局) GridLayout (網格布局); GridBagLayout (網格包布局); CardLayout (卡片布局)。

          布局類型的選用: 每個布局管理器都有自己特定的用途。要按行和列顯示幾個同樣大小的組件, GridLayout 會比較合適;要在盡可能大的空間里顯示一個組件,就要選擇 BorderLayout GridBagLayout

          如何設置布局: 每個容器( Container 對象)都有一個與它相關的缺省的布局管理器。 Applet 的缺省布局是 FlowLayout 在沒有設置新的布局前,在容器中添加組件都按照該容器的缺省布局排列。 可以通過 setLayout( ) 方法為容器設置新的布局。

          注意: 定義窗體的大小,如果是在構造函數中使用: super.setBounds(0,0,400,300); 來實現,則在主函數中,只需要使用 f.show() ,或者 f.setVisible(true); 即可,但是如果是使用 getPreferredSize() 方法來設置窗體的大小,則還需要使用 f.pack(); 語句。關閉窗體的方法有多種:

          1 )添加事件監聽器:

          f.addWindowListener(new WindowAdapter()??? // 對窗口事件進行監聽 ( 關閉窗體事件 )

          {???? public void windowClosing(WindowEvent e)

          ?????? {???? System.exit(0);? // 正常退出 Java 虛擬機 ? ??? }

          });

          2 )構造函數中添加 enableEvents(AWTEvent.WINDOW_EVENT_MASK); 語句

          重寫如下的方法:

          protected void processWindowEvent(WindowEvent e)?? // 對應前面的語句實現窗體的關閉功能

          {???? super.processWindowEvent(e);

          ?????? if(e.getID()==WindowEvent.WINDOW_CLOSING)

          ?????? {???? System.exit(0);? // 正常退出 Java 虛擬機 ? ??? }

          }

          3)JFrame 中的關閉窗體監聽事件

          f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 關閉窗口操作(正常退出 JVM JFramenoren setDefaultCloseOperation() 方法只是將窗體隱藏,所以要將其改為 JFrame.EXIT_ON_CLOSE 才可以正常退出虛擬機,關閉窗體。

          ?

          posted on 2006-11-13 18:34 Winnie 閱讀(1810) 評論(1)  編輯  收藏 所屬分類: java基礎知識

          評論

          # re: Java圖形用戶界面---AWT的介紹[未登錄] 2009-08-09 12:29 Louis

          這么好的文章,看后還是要說聲謝謝啊  回復  更多評論   

          主站蜘蛛池模板: 建湖县| 安康市| 嘉荫县| 沙湾县| 达州市| 磴口县| 二手房| 邵阳市| 平安县| 西乌珠穆沁旗| 清水河县| 尉氏县| 田阳县| 宜君县| 铜川市| 丰都县| 临澧县| 新邵县| 辉南县| 广宗县| 仙游县| 拜泉县| 安西县| 安塞县| 宣城市| 新营市| 高唐县| 吴江市| 喀喇沁旗| 宜宾县| 宁国市| 施秉县| 富阳市| 米脂县| 喀喇沁旗| 建湖县| 望城县| 长顺县| 宝鸡市| 青河县| 体育|