2017年計算機二級考試java章節(jié)輔導:文本輸入

字號:

8.3 文本輸入
    在java中,能夠用于文本輸入的組件包括JTextField(文本框)、JTextArea(文本區(qū))以及 JPasswordField(密碼框),JLabel(標簽)不支持文本輸入,但可以容納文本。
    8.3.1 JTextFileld 文本框
    JTextField文本框是一個允許編輯單行文本的swing組件,JTextField提供了多個構造方法用于創(chuàng)建JTextField對象。具體見下表8-3。
    

表8-3 JTextField構造方法
    


    構造方法
    

    說明
    

    public JTextField()
    

    構造一個新的 TextField。初始字符串為 null,列數(shù)為 0
    

    public JTextField(Stringtext)
    

    構造一個用指定文本初始化的新TextField。列數(shù)為 0
    

    public JTextField(intcolumns)
    

    構造一個具有指定列數(shù)的新的空TextField。初始字符串為 null。
    
public JTextField
(Stringtext,intcolumns)

    構造一個用指定文本和列初始化的新 TextField。text:文本值,columns:列數(shù)
    

    JTextField有兩個重要的方法setText(String t)和getText()分別用于設置文本框的顯示文本和獲取當前文本框的文本。不過這兩個方法都不是JTextField本身提供的方法,而是其父類JTextComponent所提供的。
    JTextField類可引發(fā)ActionEvent事件,當用戶在文本框中按下回車鍵時觸發(fā)。
    8.3.2 JTextArea 文本區(qū)
    JTextArea文本區(qū)是一個允許編輯多行文本的swing組件,JTextArea提供了多個構造方法用于創(chuàng)建JTextArea對象。具體見下表8-4。
    

表8-4 JTextArea構造方法
    


    構造方法
    

    說明
    

    JTextArea()
    

    構造新的 TextArea。初始字符串為 null,行/列設置為 0。
    

    JTextArea(Stringtext)
    

    構造顯示指定文本的新的 TextArea。行/列設置為 0
    

JTextArea(introws,
    intcolumns)
    


    構造具有指定行數(shù)和列數(shù)的新的空 TextArea。初始字符串為 null
    
JTextArea(Stringtext,
introws,intcolumns)

    構造具有指定文本、行數(shù)和列數(shù)的新的 TextArea。text:文本值,rows:行數(shù),columns:列數(shù)
    

    因為JTextArea是JTextComponent的直接子類,因此與JTextField一樣,也可以通過setText(String t)和getText()方法設置和獲取文本區(qū)的文本值。
    JTextArea類可引發(fā)ActionEvent事件,當用戶在文本區(qū)中按下回車鍵時觸發(fā)。
    8.3.3 JPasswordField密碼框
    在AWT組件中,并沒有單獨的密碼框組件,而是通過TextField的一個setEchoChar()方法來得到密碼框,但在Swing中則單獨通過一個類JPasswordField來表示。密碼框是文本框JTextField組件的簡單擴展。因此,其構造方法與JTextField相類似,這里不再介紹。JPasswordField類中有幾個重要方法,如下:
    

表8-5 JPasswordField類常用構造方法
    


    成員方法
    

    說明
    

    public char[] getPassword()
    

    獲得密碼的字符數(shù)組表示,用來替代getText()方法
    

    public void setEchoChar(charc)
    

    設置此 JPasswordField 的回顯字符
    

    public char getEchoChar()
    

    返回要用于回顯的字符
    

    
 
    8.3.4 JLabel標簽
    JLabel是一個靜態(tài)組件,該組件可以顯示一行靜態(tài)文本,一般只是一個說明性的文字,而不接受用戶的輸入,也無事件響應。
    JLabel提供了如下方法用于構建JLabel對象
    

表8-6 JLabel構造方法
    


    構造方法
    

    說明
    

    JLabel()
    

    創(chuàng)建無圖像并且其標題為空字符串的 JLabel類對象
    

    JLabel(Iconimage)
    

    創(chuàng)建具有指定圖像的 JLabel類對象
    
public JLabel(Iconimage,

    inthorizontalAlignment)
    

    創(chuàng)建具有指定圖像和水平對齊方式的 JLabe類對象
    
JLabel(Stringtext)

    創(chuàng)建具有指定文本的 JLabel類對象
    
JLabel(Stringtext,Iconicon,
inthorizontalAlignment)

    創(chuàng)建具有指定文本、圖像和水平對齊方式的 JLabel類對象
    
JLabel(Stringtext,
inthorizontalAlignment)

    創(chuàng)建具有指定文本和水平對齊方式的 JLabel類對象
    

    構造方法中各參數(shù)意義
    Image:顯示在JLabel上的圖標。
    horizontalAlignment:JLabel上文字的對齊方式,其值為int枚舉型,值包括SwingConstants.LEFT、SwingConstants.CENTER、SwingConstants.RIGHT、SwingConstants.LEADING 和 SwingConstants.TRAILING。
    text:顯示在JLabel上的文字。
    以下的例8-4演示了本節(jié)中所介紹的各個組件的用法,界面可提供用戶輸入用戶名和密碼,按下回車后在JTextArea顯示區(qū)顯示用戶輸入的用戶名和密碼信息,不允許用戶名或密碼為空。
    [例8-4]
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    class TextInputTest extends JFrame{
    private JTextField userName = new JTextField(10);
    private JTextArea ta = new JTextArea(4,10);
    private JPasswordField password = new JPasswordField(10);
    private JLabel label1 = new JLabel("用戶名");
    private JLabel label2 = new JLabel("密 碼");
    public TextInputTest(String title){
    super(title);
    password.setEchoChar('*');//設置回顯字符
    Container contentPane = this.getContentPane();
    JPanel panelNorth = new JPanel();
    JPanel panelCenter = new JPanel();
    panelNorth.add(label1);
    panelNorth.add(userName);
    panelCenter.add(label2);
    panelCenter.add(password);
    contentPane.add(panelNorth,BorderLayout.NORTH);
    contentPane.add(panelCenter,BorderLayout.CENTER);
    contentPane.add(ta,BorderLayout.SOUTH);
    pack();
    //監(jiān)聽userName和password控件
    userName.addActionListener(new MyActionListener());
    password.addActionListener(new MyActionListener());
    this.setVisible(true);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }