2017年計(jì)算機(jī)二級(jí)考試java章節(jié)輔導(dǎo):文本輸入

字號(hào):

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

表8-3 JTextField構(gòu)造方法
    


    構(gòu)造方法
    

    說(shuō)明
    

    public JTextField()
    

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

    public JTextField(Stringtext)
    

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

    public JTextField(intcolumns)
    

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

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

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

表8-4 JTextArea構(gòu)造方法
    


    構(gòu)造方法
    

    說(shuō)明
    

    JTextArea()
    

    構(gòu)造新的 TextArea。初始字符串為 null,行/列設(shè)置為 0。
    

    JTextArea(Stringtext)
    

    構(gòu)造顯示指定文本的新的 TextArea。行/列設(shè)置為 0
    

JTextArea(introws,
    intcolumns)
    


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

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

    因?yàn)镴TextArea是JTextComponent的直接子類(lèi),因此與JTextField一樣,也可以通過(guò)setText(String t)和getText()方法設(shè)置和獲取文本區(qū)的文本值。
    JTextArea類(lèi)可引發(fā)ActionEvent事件,當(dāng)用戶在文本區(qū)中按下回車(chē)鍵時(shí)觸發(fā)。
    8.3.3 JPasswordField密碼框
    在AWT組件中,并沒(méi)有單獨(dú)的密碼框組件,而是通過(guò)TextField的一個(gè)setEchoChar()方法來(lái)得到密碼框,但在Swing中則單獨(dú)通過(guò)一個(gè)類(lèi)JPasswordField來(lái)表示。密碼框是文本框JTextField組件的簡(jiǎn)單擴(kuò)展。因此,其構(gòu)造方法與JTextField相類(lèi)似,這里不再介紹。JPasswordField類(lèi)中有幾個(gè)重要方法,如下:
    

表8-5 JPasswordField類(lèi)常用構(gòu)造方法
    


    成員方法
    

    說(shuō)明
    

    public char[] getPassword()
    

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

    public void setEchoChar(charc)
    

    設(shè)置此 JPasswordField 的回顯字符
    

    public char getEchoChar()
    

    返回要用于回顯的字符
    

    
 
    8.3.4 JLabel標(biāo)簽
    JLabel是一個(gè)靜態(tài)組件,該組件可以顯示一行靜態(tài)文本,一般只是一個(gè)說(shuō)明性的文字,而不接受用戶的輸入,也無(wú)事件響應(yīng)。
    JLabel提供了如下方法用于構(gòu)建JLabel對(duì)象
    

表8-6 JLabel構(gòu)造方法
    


    構(gòu)造方法
    

    說(shuō)明
    

    JLabel()
    

    創(chuàng)建無(wú)圖像并且其標(biāo)題為空字符串的 JLabel類(lèi)對(duì)象
    

    JLabel(Iconimage)
    

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

    inthorizontalAlignment)
    

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

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

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

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

    構(gòu)造方法中各參數(shù)意義
    Image:顯示在JLabel上的圖標(biāo)。
    horizontalAlignment:JLabel上文字的對(duì)齊方式,其值為int枚舉型,值包括SwingConstants.LEFT、SwingConstants.CENTER、SwingConstants.RIGHT、SwingConstants.LEADING 和 SwingConstants.TRAILING。
    text:顯示在JLabel上的文字。
    以下的例8-4演示了本節(jié)中所介紹的各個(gè)組件的用法,界面可提供用戶輸入用戶名和密碼,按下回車(chē)后在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('*');//設(shè)置回顯字符
    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)聽(tīng)userName和password控件
    userName.addActionListener(new MyActionListener());
    password.addActionListener(new MyActionListener());
    this.setVisible(true);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }