Java開發筆記(一百二十一)AWT輸入框

前面介紹了文本標籤Label,該控件展現的文字是不可編輯的,若要用戶在界面上輸入文本,就得使用專門的編輯框控件。在AWT的控件家族當中,用做編輯框的有兩種控件,分別是單行輸入框TextField和多行輸入框TextArea。
TextField主要用於輸入短小精悍的單行文字,跟Label同樣,它擁有setPreferredSize、setText與setFont方法,但沒有setAlignment方法,由於輸入框內的文字只能向左對齊。除此以外,TextField還提供了下列幾個與編輯框有關的方法:
getText:獲取輸入框中的文本串。
setColumns:設置輸入框的長度爲11個字符,但容許輸入更多的字符。
setEditable:設置輸入框是否容許編輯。true表示容許,false表示不容許。
setEchoChar:設置輸入框的回顯字符。該方法用來實現密碼輸入框的功能,用戶每輸入一個字符,密碼框就回顯一個星號符「*」,這個星號即是setEchoChar方法設置的回顯字符。
以輸入11位手機號碼爲例,此時的手機號輸入框可經過如下代碼建立:html

		TextField field = new TextField(); // 建立一個單行輸入框
		field.setColumns(11); // 設置輸入框的長度爲11個字符
		field.setEditable(true); // 設置輸入框容許編輯

 

在面板對象中添加field,運行測試代碼以後,手機號輸入框的界面效果以下圖所示:測試


再以輸入6位密碼爲例,此時的密碼輸入框可經過如下代碼建立:編碼

		TextField field = new TextField(); // 建立一個單行輸入框
		field.setColumns(6); // 設置輸入框的長度爲6個字符
		field.setEchoChar('*'); // 設置輸入框的回顯字符爲星號
		field.setEditable(true); // 設置輸入框容許編輯

 

一樣在面板對象中添加field,運行測試代碼以後,密碼輸入框的界面效果以下圖所示:3d


從上圖可見,往密碼框中輸入字符,顯示出來的都是星號。
須要特別注意的是,TextField提供了setEchoChar方法來設置回顯字符,卻未提供可以取消回顯的逆向操做,這意味着:只要調用一次setEchoChar方法,那麼該輸入框將永遠顯示指定的回顯符,而沒法恢復顯示明文。惟一的解決辦法是,先從面板上移除這個輸入框,重頭建立新的輸入框再添加到面板上,如此操做的代碼片斷示例以下:htm

				panelCenter.remove(field); // 從中央面板上移除設置了回顯的密碼框
				field = new TextField(); // 建立一個單行輸入框
				field.setColumns(11); // 設置輸入框的長度爲11個字符
				panelCenter.add(field); // 在中央面板上添加輸入框
				frame.setVisible(true); // 把最新的界面顯示到窗口上

因爲TextField只能輸入一行文本,沒法輸入更多的文字,所以AWT又提供了TextArea來接收多行文本。與TextField相比,TextArea多了個setRows方法用於設置輸入框的高度(若干行的文字高度),同時取消了回顯符設置方法setEchoChar。下面是TextArea與編輯框有關的幾個方法說明:對象

getText:獲取輸入框中的文本串。
setColumns:設置輸入框的長度爲11個字符,但容許輸入更多的字符。
setRows:設置輸入框的高度爲3行字符,但容許輸入更多行。
setEditable:設置輸入框是否容許編輯。true表示容許,false表示不容許。
多行輸入框在編碼上沒啥難點,好比顯示一個20個字符寬、3行字符高的輸入框,使用TextArea實現的代碼片斷以下:blog

		TextArea area = new TextArea(); // 建立一個多行輸入框
		area.setEditable(true); // 設置輸入框容許編輯
		area.setColumns(20); // 設置輸入框的長度爲20個字符
		area.setRows(3); // 設置輸入框的高度爲3行字符
		panel.add(area); // 在面板上添加多行輸入框

 

運行以上的多行輸入框代碼,可看到以下圖所示的界面效果。開發

 



更多Java技術文章參見《Java開發筆記(序)章節目錄rem

相關文章
相關標籤/搜索