1. 選擇組件
選擇組件是指專門用於從多個條目中進行單選或多選操作的AWT組件。
µ 複選框和選項按鈕
複選框提供兩種狀態:選中|未選中。java.awt 包中的Checkbox類用於建立複選框。
ü 構造方法
public Checkbox()
public Checkbox(String str) :複選框右邊的標題文本
public Checkbox(String str,Boolean b): b是複選框的初始狀態
public Checkbox(String str,Boolean b,CheckboxGroupg):複選框屬於哪一組,這時的複選框即為選項按鈕其他方法
public Boolean getState();
public setState(boolean b):設定複選框的狀態。
public getLabel():擷取複選框右邊的標題文本。
public setLabel(String s);
ü 觸發事件
選擇或取消選擇一個複選框會觸發選項事件ItemEvent,對應的監聽介面ItemListener,事件處理方法為:
public void itemStateChanged(ItemEvent e);
ü 註冊監聽/刪除監聽的方法
public void addItemListener(ItemListener);
public voidremoveItemListener(ItemListener);
2. 下拉式清單方塊Choice
使用者可以在下拉式清單方塊中看到第一個選項和它旁邊的箭頭按鈕,當使用者單擊箭頭按鈕時,選項列表開啟。
ü 構造方法
public Choice();
ü 其他方法
public void add(String name):增加一個清單項目name。
public void insert(String name ,int index);
public void remove(String name);
public void remove(int index);
public void removeAll();
ü 其他方法
public void select(String name):把下拉式清單方塊中名稱是name選項設定成選中狀態。
public void select(int index);
public int getItemCount():返回清單項目的總數。
public int getSelectedIndex():返回當前下拉式清單方塊中被選中的清單項目的索引值,索引的起始值是0.
public String getSelectedItem():返回當前下拉式清單方塊中被選中的清單項目的名稱。
ü 觸發事件
當使用者在下拉式清單方塊中選中某個清單項目時就觸發ItemEvent選項事件,監聽介面:ItemListener。註冊和刪除監聽的方法:
public void addItemListener(ItemListener l);
public void removeItemListener(ItemListener l);
以上方法中index的值均為非負值,並且小於下拉式清單方塊的清單項目總數,否則會發生ArrayIndexOutOfBoundsException異常。
3. 列表框List
包含如幹清單項目,使用者可以挑選清單框中的一項或多項。當列表框中的清單項目數超過了列表框的高度,則列表框自動增加垂直捲軸,使用者可以通過滾動的方式挑選清單項。
ü 構造方法
public List();
public List(int n);
public List(int n,boolean b):參數n設定可見行數,b為true時設定是否允許多選,否則禁止多選。
ü 常用方法
ü 其他方法
public int getSelectedIndex();
public String getSelectedItem();
public int[] getSelectedIndexes():所有清單項目的索引值項目。
public String[] getSelectedItems();
ü 觸發事件
µ 當用按一下滑鼠列表框的某個清單項目後,觸發ItemEvent事件;
µ 當用滑鼠雙擊某個清單項目後,觸發ActionEvent事件。
4. 選擇組件的兩種不同使用方式:
µ 將若干選擇組件組成資訊提交表單,然後整體提交和處理。
µ 在某個選擇組件的選擇狀態發生變化時,立即進行響應和處理。
5. 滾動組件
AWT中的滾動組件包括Scrollbar(捲軸)和滾動面板(ScrollPane)兩種。
µ 捲軸ScrollBar:在指定的取值範圍內快速選取某一值的功能。
µ 構造方法
public Scrollbar(int orientation,int value,int visible,int minimum,int maximum)
參數orientation的取值:Scrollbar.HORIZONTAL表示水平捲軸;Scrollbar.VERTICAL表示垂直捲軸。Value:滑塊在捲軸中的初始值。 Visible:滑塊大小。 Minimum:滑塊最小值。 Maximum:滑塊最大值。
ü 常用方法
public void setValue(int value);
public int getValue();
public void setBlockIncrement(int value):指定捲軸的塊增量。
public void setUnitIncrement(int value):指定捲軸的單位增量。
ü 觸發事件
當使用者通過滑鼠操作(比如拖動滑塊位置)來改變捲軸中滑塊的位置時,會觸發AdjustmentEvent類型事件,對應的監聽介面為:AdjustmentListener,事件處理方法:
public void adjustmentValueChanged( AdjustmentEvent e);
捲軸註冊或刪除事件監聽的方法:
public void addAdjustmentListener(AdjustmentListener l);
public void removeAdjustmentListener(AdjustmentListener
滾動面板:
Java.awt.ScrollPane該類直接繼承了Container,但和其他的組件(如:Frame、Panel)有所不同,ScrollPane組件只包含單個組件並支援對所包含的組件進行水平或垂直方向的滾動操作(可以採用容器嵌套的方式實現一個滾動面板中同時顯示/滾動多個組件)。且沒有預設的布局管理器(其預設布局管理器為null),也不允許使用setLayout()方法設定其布局方式。
可以將ScrollPane理解為擁有水平和垂直捲軸的特殊Panel。
6. 菜單組件
菜單組件包括包括MenuBar(菜單條)、Menu(菜單)、MenuItem(功能表項目)、CheckboxMenuItem(帶複選框的功能表項目)和PopupMenu(彈出式菜單)。
其使用的原則是:
先建立菜單條對象並將其添加到指定菜單容器(即能夠容納MenuBar的容器)中,再向菜單條中添加菜單Menu組件,菜單組件可以嵌套包含同類組件以實現多級菜單,只有最後一級才使用功能表項目,MenuItem的用法跟Button相同,常在其上註冊ActionListener監聽器已觸發真正的處理邏輯。
µ 菜單條MenuBar
MenuBar mb=new MenuBar();
frame.setMenuBar(mb);
µ 菜單Menu
Menu mnFile=new Menu(“檔案”);
Menu mnEdit=new Menu();
mb.add(mnFile);
mb.add(mnEdit);
µ 功能表項目MenuItem
public MenuItem();
public MenuItem(String label);
public MenuItem(String label,MenuShortcut s);
參數s用於設定功能表項目的快速鍵,是MenuShortcut類的對象,該類的建構函式為MenuShortcut(intkey);參數key取KeyEvent類中的靜態常量
MenuItem miOpen=new MenuItem(“開啟”);
MenuShortcut msc=new MenuShortcut(KeyEvent.VK_E);
mnFile.addSeparator():分隔條
功能表項目觸發的事件:ActionEvent
7.二級菜單和複選功能表項目
µ 二級菜單:菜單中嵌套菜單
µ 複選功能表項目(CheckboxMenuItem)
注意:用按一下滑鼠複選功能表項目引發的事件是ItemEvent,因此要具體實現的監聽介面為ItemListener。
8. 彈出式菜單(PopupMenu)
µ 構造方法
public PopupMenu();
例如:PopupMenu popM=new PopupMenu();
MenuItem miOpen=new MenuItem(“開啟”);
MenuItem miSave=new MenuItem(“儲存”);
popM.add(miOpen);
popM.add(miSave);
µ 由於彈出式菜單預設是不可見的,通常將它附著在某個組件或容器上,然後對該組件或容器增加滑鼠監聽。例如:txt.add(popM);
µ 顯示彈出式菜單
public void show(Component origin,int x,int y);
µ 滑鼠事件類別中的方法isPopupTrigger()用於返回滑鼠事件是否為該組件的快顯功能表觸發的事件。
Windows系統中是滑鼠右鍵鬆開時觸發的。而Mac OS系統中則是當滑鼠按下時觸發的,為了簡化編程,MouseEvent類提供了一個統一的方法isPopupTrigger()來檢測此當前滑鼠事件是否為所在平台的彈出式菜單觸發事件,如果是則返回true。
9. 對話方塊
µ 對話方塊組件Dialog:介面效果和Frame類似,是一個擁有邊框和最大化、最小化、關閉按鈕的最上層視窗,其中也可以添加其他的組件或容器,但不同之處在於對話方塊組件主要用於接收使用者某種形式的簡單輸入,起到“確認”操作或“警告/提示”的作用。
10. 需注意:
Dialog組件的預設布局管理器是BorderLayout類型,且預設初始化為不可見的,需要使用setVisible(true)方法使之顯示出來
Dialog組件雖然是最上層視窗,但必須依賴一個其他的視窗而不能單獨存在,所依賴的視窗稱為對話方塊的所有者(Owner),通常是Frame或其他Dialog。
當其所有者視窗最小化時,Dialog也會自動隱藏為對使用者不可見,當所有者視窗被還原時,Dialog重新變為可見。
11. 通過建立Dialog的子類來建立一個對話方塊類,然後這個類的一個執行個體,即該類的一個對象,就是一個對話方塊。
構造方法
public Dialod(Frame f,String s):構造一個具有標題的初始不可見的對話方塊,s是對話方塊的標題,f是對話方塊的所有者。
public Dialod(Frame f,String s,boolean b):b決定對話方塊是否為有模或無模式。
µ 常用方法
public String getTitle();
public void setTitle();
public void setModal(Boolean model):設定模式
public void setSize(int width,int height);
public void setVisible(boolean b);
12. 對話方塊分為無強制回應對話方塊(ModelessDialog)和有強制回應對話方塊(Modal Dialog)兩種:
- 有強制回應對話方塊將阻斷輸入到其所在應用程式中其他所有表單的內容,例如MS Word中的檔案對話方塊。
- 無強制回應對話方塊顯示與否都不影響所在應用程式其他表單的,通常用於提供非必須的輔助性功能,如Word的“尋找/替換”對話方塊。
13. 檔案對話方塊FileDialog
檔案對話方塊java.awt.FileDialog,繼承了Dialog類,但屬於有強制回應對話方塊,用於在開啟和儲存檔案時指定檔案的路徑和檔案名稱。預設為開啟檔案,也可以在構造方法中顯示指定其工作方式。
µ 構造方法
public FileDialog(Frame f,String s, int mode):mode指定對話方塊的工作方式:“開啟”或“儲存”,取值:FileDialog.LOAD、FileDialog.SAVE
µ 常用方法
public String getDirectory():返迴文件對話方塊中選定檔案的所屬目錄。
public String getFile():返迴文件對話方塊中選定檔案名稱,如果檔案不存在則返回null。
14. 需注意,檔案對話方塊僅僅提供了一個檔案操作的介面,要真正實現對檔案的操作應使用檔案的輸入輸出資料流(方法loadFile()、saveFile()和saveFileAs()中都用到了檔案的輸入/輸出流的操作)。