java jtextfield 密码_java中的文本输入框JTextField与JTextArea、密码输入框

文本输入框包括两种,单行文本输入框(JTextField) 和多行文本输入框 (JTextArea)。密码输入框则只有一种(JPasswordField)。JPasswordField 是 JTextField 的子类,它们的主要区别是JPasswordField 不会显示出用户输入的东西,而只会显示出程序员设定的一个固定字符,比如 '*'。

下面的示例图和代码是 JTextField、JPasswordField 和 JTextArea 的示例:

/**

* TestTexts.java

* @author Fancy

*/

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 voidcaretUpdate(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 = newJTextArea(5, 15);)。   多行文本框默认是不会自动折行的 (不过可以输入回车符换行),我们可以使用JTextArea 的 setLineWrap 方法设置是否允许自动折行。setLineWrap(true)是允许自动折行,setLineWrap(false)则是不允许自动折行。多行文本框会根据用户输入的内容自动扩展大小,不信,自己做个实验——如果不自动折行,那么多行文本框的宽度由最长的一行文字确定的;如果行数据超过了预设的行数,则多行文本框会扩展自身的高度去适应。换句话说,多行文本框不会自动产生滚动条。怎么办?后面讲到滚动窗格(JScrollPane) 的时候,你就知道了。   多行文本框里文本内容的获得和设置,同样可以使用 getText 和 setText 两个方法来完成。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值