jtextfieldjava
Ⅰ java 中 JTextArea 和 JTextField 的有什麼區別
文本輸入框、密碼輸入框
文本輸入框包括兩種,單行文本輸入框 (JTextField) 和多行文本輸入框 (JTextArea)。密碼輸入框則只有一種 (JPasswordField)。JPasswordField 是 JTextField 的子類,它們的主要區別是 JPasswordField 不會顯示出用戶輸入的東西,而只會顯示出程序員設定的一個固定字元,比如 '*'。
下面的示例圖和代碼是 JTextField、JPasswordField 和 JTextArea 的示例:
import javax.swing.*;
import javax.swing.event.*;
public class TestTexts extends JFrame {
private JLabel label = new JLabel("Status");
private JTextField textField;
private JPasswordField pwdField;
private JTextArea textArea;
public TestTexts() {
super("Test Texts");
setDefaultCloseOperation(EXIT_ON_CLOSE);
getContentPane().setLayout(new java.awt.FlowLayout());
textField = new JTextField(15);
textField.addCaretListener(new CaretListener() {
public void caretUpdate(CaretEvent e) {
// 如果改變了內容,就可以即時更新 label 顯示的內容
label.setText(textField.getText());
}
});
pwdField = new JPasswordField(15);
pwdField.setEchoChar('#');
textArea = new JTextArea(5, 15);
textArea.setLineWrap(true);
getContentPane().add(textField);
getContentPane().add(pwdField);
getContentPane().add(textArea);
getContentPane().add(label);
setSize(200, 200);
}
public static void main(String[] args) {
TestTexts tt = new TestTexts();
tt.show();
}
}
上例中,我們構造了一個寬度為 15 個字元的單行文本框 (textField = new JTextField(15);),並使用 addCaretListener 方法添加了一個 CaretListener (textField.addCaretListener ...)。CaretListener 監聽文本游標的移動事件。當用戶使用鍵盤、滑鼠等移動了文本游標在 JTextField 中的位置時觸發這個事件。我們需要重載 caretUpdate(CaretEvent e) 對事件進行處理 (public void caretUpdate(CaretEvent e) ...)。這樣,我們可以在這里做類似 VB 中 TextBox 的 OnChange 事件中做的事情。
JTextField 有 5 個構造方法,常用其中的四個:
JTextField()
JTextField(int columns),如上例 textField = new JTextField(15);
JTextField(String text)
JTextField(String text, int columns)
其中,參數 text 是單行文本框的初始內容,而 columns 指定了單行文本框的寬度,以字元為單位。JTextField 中的文本內容可以用 getText() 方法獲得。也可以用 setText 方法指定 JTextField 中的文本內容。
JPasswordField 是 JTextField 的子類,其構造方法也是類似的。JPasswordField 提供了 setEchoChar(char ch) 方法設置為了隱藏密碼而顯示的字元,默認為 '*' 字元,上例中則設置為了 '#' 字元 (pwdField.setEchoChar('#');)。與 JTextField 一樣,JPasswordField 也用 getText 方法和 setText 獲得或者設置文本內容 (當然在用戶界面上是隱藏的)。
JTextField 是單行文本框,不能顯示多行文本,如果想要顯示多行文本,就只好使用多行文本框 JTextArea 了。JTextArea 有六個構造方法,常用的也是四個:
JTextArea()
JTextArea(int rows, int columns)
JTextArea(String text)
JTextArea(String text, int rows, int columns)
text 為 JTextArea 的初始化文本內容;rows 為 JTextArea 的高度,以行為單位;columns 為 JTextArea 的寬度,以字元為單位。如上例中就構造了一個高 5 行,寬 15 個字元的多行文本框 (textArea = new JTextArea(5, 15);)。
多行文本框默認是不會自動折行的 (不過可以輸入回車符換行),我們可以使用 JTextArea 的 setLineWrap 方法設置是否允許自動折行。setLineWrap(true) 是允許自動折行,setLineWrap(false) 則是不允許自動折行。多行文本框會根據用戶輸入的內容自動擴展大小,不信,自己做個實驗——如果不自動折行,那麼多行文本框的寬度由最長的一行文字確定的;如果行數據超過了預設的行數,則多行文本框會擴展自身的高度去適應。換句話說,多行文本框不會自動產生滾動條。怎麼辦?後面講到滾動窗格 (JScrollPane) 的時候,你就知道了。
多行文本框里文本內容的獲得和設置,同樣可以使用 getText 和 setText 兩個方法來完成。
Ⅱ java中JTextField什麼意思
是api裡面得一個文本主鍵,要掉用它就要import實現介面,對於初學者建議先看寫基礎點得書,孫衛琴的《Java面向對象編程》 ,良葛格(林信良)的《java學習筆記 》都還不錯,不要一來就看<<Thinking in Java>>太難了,即使要看也最好看英文版得,翻譯得自己感覺翻譯得不咋樣
Ⅲ java中怎麼在文本框(JTextField)中輸出Int型的數字
要輸出到UI界面或者到控制台都只能是字元串的形式。只有後台參與邏輯、算術運算的時候才需要有整形這種類型的存在。將文本框中的字元串轉換成int有兩種方式:
第一種就是強制類型轉換。
例如:inta=(int)"3";
第二種方式就是使用java提供的自動裝箱拆箱功能,使用整形類型的包裝類。
例如:Integera=Integer.parseInt("3");
在計算機中我們能夠通過界面UI呈現出來的字元都是字元串。當然你這里說的JTextField中的文本當然也不例外。程序開發中之所以有整形(byte, short,int ,long),只是為了程序在後台進行算術運算和邏輯運算方便而已,能夠將計算機語言和我們人類的自然語言相互靠攏,方便程序的編寫。
Ⅳ java中獲取JTextField中的內容
獲得 JTextField 中的內容的方法是 : jtf.getText();API中有這個方法,你看看吧,而且,jtf.setText()方法可以設置 JTextField 中的內容。
希望能夠幫助到你,望採納!
Ⅳ 怎麼樣在java中設置jTextField可輸入的字元數
//引用方法:
//JtextFieldjtf=newJTextFiel()
//jtf.setDocument(newClsNumberDocument(5));
importjavax.swing.text.PlainDocument;
importjavax.swing.text.AttributeSet;
importjavax.swing.text.BadLocationException;
importjava.awt.Toolkit;
/**
*<p>Title:限制輸入為數字</p>
*@authorWancar
*@version0.5
*日期2002-03-21
*@right(c)2000-2001.
*
*@description
*限制輸入為數字的文本類
*
*並行策略描述(可選)
*修改歷史:
*無
*修改描述:無
*
*內部類清單:
*無
*/
/**
*限制輸入為數字的文本類
*/
{
/**
*
*/
=1L;
privatebooleanisCanBeNegative=false;//可以為負數
privatefinalstaticintSTRING_MAX_LEN=255;//最大長度
privateintlen=STRING_MAX_LEN;//當前可接受的最大長度
/**
*構造方法
*/
publicClsNumberDocument(){
}
/**
*構造方法
*
*@paramlen
*限制的長度
*/
publicClsNumberDocument(intlen){
this.len=len;
}
/**
*可以為付數並限制長度
*
*@paramisCanBeNegative
*是否可以為負數
*@paramlen
*限制的最大長度
*/
publicClsNumberDocument(booleanisCanBeNegative,intlen){
this.isCanBeNegative=isCanBeNegative;
this.len=len;
}
//變數falg的作用是,通過傳入的數是正數還是負數來決定數字的位數
//以便做到指定數字位數時,只要考慮數字的位數,而無需考慮正負號
//所佔用的位數。
privatebooleanfalg=false;
/**
*實現的插入方法
*
*@paramoffset
*偏移
*@params
*要接受的字元串,在拷貝粘貼時會有多個字元
*@paramattributeSet
*@throwsBadLocationException
*/
publicvoidinsertString(intoffset,Strings,AttributeSetattributeSet)
throws
BadLocationException{
try{
if(isAllNumber(s)){
finalintlength=this.getLength();
if(s.charAt(0)=='-'){
if(this.isCanBeNegative){
if(length==0){
this.len=falg?len:len+1;
falg=true;
super.insertString(offset,s,attributeSet);
}
}
}else{
if(length==0){
this.len=falg?len-1:len;
falg=false;
}
if(length<len){
Stringsrc=this.getText(0,length);
Double.parseDouble(src.substring(0,offset)+s
+src.substring
(offset,src.length()));
super.insertString(offset,s,attributeSet);
}
}
}
}catch(Exceptionex){
Toolkit.getDefaultToolkit().beep();
}
}
/**
*判斷字元串是否全是數字
*
*@params
*@return
*/
privatebooleanisAllNumber(Strings){
booleanret=true;
if(s.length()>0){
char[]buf=s.toCharArray();
for(inti=0;i<buf.length;i++){
charc=buf[i];
if(c<'0'||c>'9'){
if(c!='.'&&c!='-'){
ret=false;
break;
}
}
}
}else{
ret=false;
}
returnret;
}
}
Ⅵ java JTextField中的內容比較
先理解下你的代碼:
----------------------------存在的問題-----------------------------------------
JTextField text1 = new JTextField("");
String s1=text1.getText(); //此時s1的字元串就是「」
if(s1.equals("111"))//你試圖讓字元串""和字元串"111"比較。當然是false了
所以s1要在點擊按鈕的時候在取得。你要寫死了。他就只取得一次。就是最開始賦值的時候,他取得了一次text1的值。無論你後來如何修改text1的值。對於s1來說沒用。
---------------------------------------------------------------------------------
修改建議:1:去掉button1外面的if判斷。
2:把if判斷寫到button1動作監聽裡面,並在判斷前取得一次text1的值給予s1
----------------------------------修改-----------------------------------------
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String s1 = text1.getText();
if (s1.equals("111")){
JOptionPane.showMessageDialog(button1, "ok");
}
}
});
Ⅶ java中JTextField如何強制失去焦點或者賦予焦點
讓JTextField文本框響應焦點事件 即可.
核心代碼
JTextFieldjtf=newJTextField(10);jtf.addFocusListener(newFocusListener(){publicvoidfocusLost(FocusEvente){//失去焦點時System.out.println("失去了焦點");jtf.setBackground(Color.WHITE);}publicvoidfocusGained(FocusEvente){//獲得焦點時System.out.println("獲得了焦點");tf.setBackground(Color.PINK);}});效果圖
參考代碼
importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;{JTextFieldjtf;publicTextFrame(){JPaneljp=newJPanel();jtf=newJTextField(10);jtf.addFocusListener(newFocusListener(){@OverridepublicvoidfocusLost(FocusEvente){//失去焦點時System.out.println("失去了焦點");jtf.setBackground(Color.WHITE);}@OverridepublicvoidfocusGained(FocusEvente){//獲得焦點時System.out.println("獲得了焦點");jtf.setBackground(Color.PINK);}});jp.add(jtf);JButtonjb=newJButton("點擊按鈕,文本框會失去焦點");add(jb,BorderLayout.NORTH);add(jp,BorderLayout.SOUTH);setTitle("DEMO");setSize(300,220);//窗口大小setLocationRelativeTo(null);//窗口居中setDefaultCloseOperation(EXIT_ON_CLOSE);//窗口點擊關閉時,退出程序setVisible(true);}publicstaticvoidmain(String[]args){newTextFrame();}}Ⅷ 如何獲取java中jtextfield
JTextField jtf = new JTextField(10);
jtf.setText("123");//設置文本框的默認文本是123
如果想要獲得jtf文本框里的數據.可以使用
String str = jtf.getText();//得到字元串123
如果想要得到整數類型.就轉換一下
int x = Integer.parseInt(str);//得到了整數123
Ⅸ java里的JTextField文本框怎麼設置大小
文本框.setBounds(10,10,30,170) 設置位置。
文本框的寬是改不了的,只有長度才能改變,JTextField jtf = new JTextField(length);
length大了,文本框就長了。
想要長寬可變的文本框可用:JTextArea jta = new JTextArea(長,寬);JTextArea jta = new JTextArea(長,寬); 也是用jta.setText(); 來顯示的;
與JTextField用法幾乎一樣;具體用法可查API。代碼如下:
1.//核心代碼第一部分,設置文本框,密碼框長寬;
2.wbk=newJTextField(8);//在這個窗口大小里,設置長度為8,比較合適;
3.mmk=newJPasswordField(8);//密碼框也設置長度為8;
4.//核心代碼第二部分,把文本框,密碼框等加入到JPanel里;
5.JPaneljpwbk=newJPanel();//1放文本框的JPanel面板;
6.jpwbk.add(wbk);//把文本框放入;
7.p[0].add(jpwbk);//把JPanl放入網格布局裡; 8.JPaneljpbutton0=newJPanel();//2放按鈕的JPanel面板(按鈕也小點好看點); 9.jpbutton0.add(button[0]);
10.jp[0].add(jpbutton0);
11.jp[0].add(biaoqian[2]);
12.JPaneljpmmk=newJPanel();//3放密碼框的JPanel面板
13.jpmmk.add(mmk);
14.jp[0].add(jpmmk);