11.3文本输入

本文详细介绍了Java Swing中的文本输入组件,包括文本域(JTextFiled)、文本区(JTextArea)、密码域(JPasswordField)的使用方法。文本域适用于单行文本输入,而文本区支持多行文本编辑。密码域则用于隐藏输入内容,保障用户隐私。此外,还提到了标签(JLabel)的创建和使用,以及如何通过滚动窗格添加滚动条到文本区。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

11.3文本输入

允许用户输入和编辑文本的组件,可以使用文本域(JTextFiled),或者可以使用==文本区(JTextArea)==组件输入文本,
文本域只能接收单行文本
文本区能够接受多行文本
JPasswordField也只能接收单行文本的输入,但不会将输入的内容显示出来

这三个类都继承于JTextComponent类。JTextComponen是一个抽象类。

常用方法表:

方法名方法作用
String getText()获得文本组件的文本
void setText(String text)设置文本组件的文本
Booleam isEditable()返回是否可以编辑这个文本组建的内容
void setEditable设置editable特性,决定用户是否可以编辑这个文本内容

11.3.1 文本域
把文本域添加到窗口的常用方法就是把它添加到一个面板或者其他的容器中,这与添加按钮完全一样。

var panel=new JPanel();
var textField=new JTextField("Default input",20);
panel.add(textField);

这段代码将添加一个文本域,初始化时在其中放入字符串"Default input"。构造器的第二个参数是这个文本域的宽度。一列就是指当前使用的字体一个字符的宽度,如果希望文本域最多能够输入n个字符就要设置为n列
如果需要在运行时重新设置列数就可以使用setColumns方法
使用setColumns方法改变一个文本框的大小之后,需要调用外围容器的revalidate方法。

textFiele.setColumns(10);
panel.revalidate();

setText方法可以改变文本域中的内容,这个方法是从JTextComponent父类继承来的。

setText("This is my new text);

getText()方法可以获得当前的文本框内容,这个方法是从JTextComponent父类继承来的。

getText();

如果想删除获得的文本前后的空格可以对getText的返回值调用Trim方法

getText().trim();

如果想改变字体需要调用setFont方法

常用方法表:

方法名方法作用
JTextField(int cols)构造一个文本域,参数为指定的列数
JTextField(String text,int cols)构造一个文本域,第一个参数为初始的字符串,第二个参数为指定的列数
int getColumns()获取文本域的列数
void setColumns()设置文本域的使用列数
void revalidate()重新计算组建的位置和大小
void setFont()设置这个组件的字体
void validate()重新计算组件的位置和大小,如果组件时容器,容器中的所有组件也会重新计算位置,大小
Font getFont()获得这个组件的字体

11.3.2 标签和标签组件
标签是容纳文本的组件,他们没有任何的修饰(例如:没有边缘),也不能影响用户的输入,可以利用标签来标识组件要想正确的使用一个标签
应该

  1. 用正确的文本构造一个JLable组件
  2. 将它放置在距离需要表示的组件足够近的地方,以便用户看出这个标签所标识的组件

JLabel的构造器可以允许指定的初始文本或者图片,也可以选择内容的排列方式。可以用SwingConstants接口中的常量来指定排列方式

//标签右对齐
var label=new JLabel("This is my label",SwingConstants.RIGHT);

或者

//标签右对齐
var label=new JLabel("This is my label",JLabel.RIGHT);

常用方法:

方法名方法作用
JLable(String text)用文本设置标签
JLable(Icon icon)用图片设置标签
JLable(String text,int align)用文本设置标签,第二个参数为排列方式
JLable(String text,Icon icon,int align)用图片文本设置标签,第三个参数为排列方式
String getText()获得文本
void setText(String text)设置文本
Icon getIcon()获得设置文本的图片
void setIcon(Icon icon)设置标签的图片

11.3.3密码域

密码域是一种特殊的文本域,为了避免有不良企图的人站在一旁看到密码,用户输入的字符不真正显示出来。每个输入的字符都用回显字符表示,典型的回显字符是星号*,Swing提供了JPasswordField类来实现这样的文本域

密码域也是一个体现模型-视图-控制器架构模式强大功能的例子。密码域采用与常规文本相同的模型来存储数据,但是,它的视图却改为显示回显字符,而不是实际的字符。

常用方法:

方法名方法作用
JPasswordField(String text,int columns)构造一个新的密码域
void setEchoChar(char echo)为密码域设置回显字符,0会设置为默认的回显字符
char[] getPassword()返回密码域中的包含的文本。为了得到更好的安全性,在使用之后,应该覆写所返回数组的内容

11.3.4 文本区

JTextArea组件是接受用户的输入超过一行。
用户可以输入多行文本,并用回车键换行。
每行都以一个 ‘\n’结尾

在JTextArea组件的构造器中可以指定文本区的行数和列数。

textArea=new JTextArea(8,40);//8 lines 40 columns

用户可以用setColums方法改变列数,setRows方法改变行数,这些值指示首选大小——布局管理器可能会对文本区进行缩放

如果文本区的文本过长,超出显示范围,那么剩下的文本,就会被减裁掉。
可以通过开启换行特性来避免减裁过长的行
textArea.setLineWrap(true);//long lines are wrapped

换行只是视觉效果,文档中的文本没有改变,并没有在文本中自动插入‘\n’字符

11.3.5 浮动窗格
文本区没有滚动条。如果需要滚动条,可以将文本区放在滚动窗格中

textArea=new JTextArea(8,40);
var scrollPanel=new JScrollPane(textArea);

现在滚动窗格管理文本区的视图,如果文本超过了文本区可以显示的范围,滚动条就会自动出现

var textArea=new JTextArea();
var scrollPanel=new JScrollPane(textArea);
add(scrollPanel,BordLayout.NORTH);
方法名方法作用
JTextArea()构造一个文本区
JTextArea(int rows ,int cols)构造一个文本区用行和列
JTextArea(String text,int rows,int cols)加一个初始化文本到文本区,构造一个文本区用行和列
void setColumns(int cols)设置文本区应该使用的首选列数
void setRows(int rows)设置文本区应该使用的首选行数
void append(String newText)将给定文本最佳到文本区中已有的文本的末尾
void setLineWrap(boolean wrap))打开或关闭换行
void setWrapStyleWord(boolean word)如果为true 超长的单词会在边界换行,如果为false 超长的行会被截断而不考虑单词边界
void setTabSize(int c)将制表符设置为c列,制表符不会被转化为空格,但可以让文本对齐到下一个制表符处
JScrollPane(Component)创建一个滚动窗格用来显示指定组建的内容,当组件内容超出显示返回,滚动条会自动出现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值