前面介紹瞭如何經過AWT顯示程序的窗口界面,那麼要怎樣在該窗口上面添加豐富多樣的控件呢?注意Frame類是個窗口工具,它由窗楣(標題欄)與窗體(窗口主界面)兩部分組成,故而Frame類只對整個窗口統籌規劃,自己並不能直接添加各種控件。實際的控件管理操做交給了專門的Panel面板工具,由面板接管窗口主界面,在面板上添加和刪除控件,Frame對象只需調用add方法把面板添加到窗口便可。
接下來以常見的按鈕控件爲例,演示一下如何在面板上添加按鈕、進而在窗口界面顯示按鈕的過程。按鈕控件名叫Button,按鈕上的文字既能在構造方法中傳入,也能經過setLabel方法來設置。不過按鈕的大小沒法經過setSize方法設置,必須調用setPreferredSize方法才行。若要在窗口上顯示一個按鈕,則需在原來的窗口代碼中補充以下代碼片斷:html
Panel panel = new Panel(); // 建立一個面板 Button button = new Button("點我"); // 建立一個按鈕 // 設置空間大小要用setPreferredSize,由於setSize無論用 button.setPreferredSize(new Dimension(200, 30)); // 設置按鈕的推薦寬高 panel.add(button); // 在面板上添加按鈕 frame.add(panel); // 在窗口上添加面板
運行添加了按鈕控件的窗口代碼,屏幕中央彈出了以下圖所示的小窗。程序員
有的朋友可能會發現,按鈕文字並未顯示正確的漢字,而是變成亂碼了。這是由於Eclipse配置了UTF8字符編碼,而操做系統默認的漢字編碼是GBK,兩邊的字符編碼標準不一致致使了亂碼。假若Eclipse的工做空間配置爲GBK編碼,則不會出現漢字亂碼的狀況。固然,即便Eclipse配置成UTF8編碼,給程序加入運行參數「-Dfile.encoding=gbk」,這樣運行時也能正常顯示漢字。具體步驟說明以下:右擊測試用的代碼文件,在右鍵菜單中依次選擇「Run As」——「Run Configurations...」,此時會彈出以下圖所示的配置界面。ide
單擊該界面右邊的Arguments選項卡,在下面的VM arguments輸入框中填入運行參數「-Dfile.encoding=gbk」,而後單擊界面下方的Run按鈕,運行窗口的按鈕上就會正確顯示漢字了。
如同學口右上角的叉號按鈕那樣,面板上的按鈕也容許由程序員定製單擊動做的處理,調用按鈕對象的addActionListener方法表示給它註冊一個點擊監聽器,而按鈕的單擊事件會觸發監聽器的actionPerformed方法,有須要執行的代碼放進該方法就行了。下面是給按鈕添加單擊事件的代碼例子:工具
button.addActionListener(new ActionListener() { // 給按鈕註冊一個點擊監聽器 @Override public void actionPerformed(ActionEvent e) { // 發生了單擊事件 button.setLabel(getNowTime() + " 點擊了按鈕"); // 設置按鈕的文本 } });
以上代碼裏的getNowTime方法主要用來獲取當前時間,方便觀察每次單擊動做的發生時刻,該方法的實現代碼示例以下:測試
// 獲取當前的時間字符串 public static String getNowTime() { // 建立一個日期格式化的工具 SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); // 將當前時間按照指定格式輸出格式化後的時間字符串 return sdf.format(new Date()); }
運行添加了單擊事件的按鈕測試代碼,接着單擊窗口上的按鈕控件,單擊以後的窗口界面以下圖所示:編碼
看到按鈕上的文字發生了變化,可見剛纔註冊的點擊監聽器果真奏效了。
最後總結一下Button工具提供的幾個方法,它們的簡要說明見下:
setLabel:設置按鈕上的文字標籤。
setPreferredSize:設置按鈕的推薦寬高。
addActionListener:給按鈕註冊一個點擊監聽器。
setEnabled:設置按鈕是否可用。true表示啓用按鈕,false表示禁用按鈕。操作系統
更多Java技術文章參見《Java開發筆記(序)章節目錄》orm