java核心技术卷 之文本输入
来源:互联网 发布:淘宝店开店流程 编辑:程序博客网 时间:2024/06/06 01:07
文本域(JTextField)和文本区(JTextArea)组件 用于获取文本输入。文本域只能接收中行文本的输入,而文本区能够接收多行文本的输人。JPassword也只能接收单行文本的输人,但不会将输入的内容显示出来。
这三个类都继承于JTextComponent类。由于JTextComponent是一个抽象类,所以不能够构造这个类的对象。另外,在Java中常会看到这种情况。在一个文本域和文本区内获取(get)、设置(set)文本的方法实际上都是JTextComponent类中的方法。
String getText()
void setText(String text)
获取或设置文本组件中的文本。
boolean isEditable()
void setEditable( boolean b)
获取或设置editable特件,这个特性决定了是否可以编辑文本组件中的内容。
文本域
把文木域添加到窗口的常用办法是将它添加到面板或者其他容器中,这与添加按钮完全一样:
JPanel panel = new JPanel();
JTextField textField = new JTextField(“Default input”, 20);
panel.add(textField);
这段代码将添加一个文本域,同时通过传递字符串‚Default input‛进行初始化。构造器的第二个参数设置文本域的宽度,这个示例中,宽度值为20 列。但是,这里所说的列不是一个精确的测量单位。一列就是在当前使用的字体下一个字符的宽度。如果希望文本域最多能够输人n个字符,就应该把宽度设置为n列。实际中,这样做效果并不理想, 应该将最大输入长度再多设丨〜2个字符。列数只是给AWT设定首选(preferred)大小的一个提示。如果布局管理器需要缩放这个文本域,它会调整文本域的大小。在JTextField的构造器中设定的宽度并不是用户能输入的字符个数的上限。用户通常不喜欢滚动文本域,因此应该尽量把文本域设置的宽一些。如果需要作运行时重新设置列数,可以使用lsetColirnins方法。
密码域
密码域是一种特殊类型的文本域。为了避免有不良企图的人看到密码,用户输人的字符不显示出来。每个输入的字符都用回显字符(echo character)表示,典型的回显字符是星号 (*)。Swing提供了JPasswordField类来实现这样的文本域。 密码域是另一个应用模型-视图-控制器体系模式的例子。密码域采用与常规的文本域相同的模型来存储数据,但是,它的视图却改为显示回显字符,而不是实际的字符。
JPasswordField(String text, int columns)
构造一个新的密码域对象:
void setEchoChar(char echo)
为密码域设贤回显字符。注意:独特的观感可以选择自己的回®字符。0表示重新设靑 为默认的回显字符。
chart ] getPassword()
返问密码域中的文本。为了安全起见,在使用之后应该覆盖写返回的数组内容(密码并不是以String的形式返回,这是因为字符串在被垃圾回收器回收之前会一直驻留在虚拟机中)。
文本区
有时,用户的输入超过一行。正像前面提到的,需要使用JTextArea组件来接收这样的输入。在程序中放置一个文本区组件时,用户就可以输入多行文本,并用ENTER键换行。每行都以一个\n结尾。
在JTextArea组件的构造器中,可以指定文本区的行数和列 数。例如:
textArea = new ]TextArea(8f 40); // 8 lines of 40 columns each
与文本域一样。出于稳妥的考虑,参数columns应该设置的大 一些另外,用户并不受限于输入指定的行数和列数。当输人 过长时文本会滚动。还可以用setColnmns方法改变列数,用setRows方法改变行数这些数值只是首选太小——布局管理器可能会对文本区迸行缩放。
如果文本区的文本超出显示的范,那么剩下的文本就会被剪掉。可以通过开启换行特性来避免裁剪过长的行:
textArea.setLineWrap(true); // long lines are wrapped
换行只是视觉效果;文档中的文本没有改变,在文木中并没有插入‘\n‛字符。
滚动窗格
在Swing中,文本区没有滚动条。如果需要滚动条,可以将文本区插入到滚动窗格 (scroll pane)中。
textArea = new JTextArea(8, 40);
JScrollPane scrollPane = new JScrollPane(textArea);
现在滚动窗格管理文本区的视图。如果文本超出了文本可以显示的范围,滚动条就会自动地出现,并且在删除部分文本后,当文本能够显示在文本区范围内吋,滚动条会再次自动地消失。滚动是由滚动窗格内部处理的,编写程序时尤S处理滚动事件。
这是一种为任意组件添加滚动功能的通用机制,而不是文本区特有的。也就是说,要想为组件添加滚动条,只需将它们放入一个滚动窗格中即可。
示例代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* Created by IBM on 2017/9/18.
*/
public class TextComponentFrame extends JFrame {
public static final int TEXTAAREA_ROWS=8;
public static final int TEXTAAREA_COLUMNS=20;
public static void main(String[]args){
TextComponentFrame text=new TextComponentFrame();
text.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
text.setVisible(true);
}
public TextComponentFrame(){
final JTextField textField=new JTextField();
final JPasswordField passwordField=new JPasswordField();
JPanel northPanel=new JPanel();
northPanel.setLayout(new GridLayout(2,2));
northPanel.add(new JLabel("User name:",SwingConstants.RIGHT));
northPanel.add(textField);
northPanel.add(new JLabel("Password:",SwingConstants.RIGHT));
northPanel.add(passwordField);
add(northPanel,BorderLayout.NORTH);
final JTextArea textArea=new JTextArea(TEXTAAREA_ROWS,TEXTAAREA_COLUMNS);
JScrollPane scrollPane=new JScrollPane(textArea);
add(scrollPane,BorderLayout.CENTER);
JPanel southPanel=new JPanel();
JButton insertButton=new JButton("Insert");
southPanel.add(insertButton);
//按钮单击事件
insertButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textArea.append("User name:"+textField.getText()+" Password:"+new String(passwordField.getPassword())+"\n");
}
});
add(southPanel,BorderLayout.SOUTH);
pack();
}
}
运行结果:
JTextArea()
• JTextArea( int rows, int cols)
• JTextArea(String text, i nt rows, Int cols)
构造一个新的文本区对象。
• void setCol umns( int cols)
设置文本区应该使用的首选列数
• void setRows(int rows)
设饨文本区应该使的首选行数
• void append(String newText)
将给定的文本追加到文本区中已有文本的尾部
• void setLineWrap(boolean wrap)
打开或关闭换行。
• void setWrapStyleWord(boolean word)
如果word是tme,超长的行会作字边框处换行。 如果为false,超长的行被截断时不考虑字边框。
• void setTabSi ze(int c)
将制表符(tab stop)设置为c列。注意,制表符不会被转化为空格,但可以让文本对齐到下一个制表符处。
Awjjavax.swingJScrollPane 1.2
• JScrol1Pane(Component c )
创逑一个滚动窗格,用来显示指定组件的内容当组件内容超过显示范围时,滚动条会自动地出现。
- java核心技术卷 之文本输入
- java核心技术卷 之JFrame
- java核心技术卷 之菜单
- java核心技术卷 之工具栏
- java核心技术卷 之创建框架
- java核心技术卷 之框架属性
- java核心技术卷 之事件处理基础
- java核心技术卷 之布局管理概述
- java核心技术卷 之网格布局
- java核心技术卷 之复选框
- Java核心技术卷之位操作
- java核心技术卷 之单选按钮
- java核心技术卷 之创建对话框
- java核心技术卷 之对话框数据交换
- java核心技术卷 之异常分类
- java核心技术卷 之捕获异常
- java核心技术卷 之泛型程序设计
- java核心技术卷 之泛型方法
- 梯度下降的三种形式,BGD,SGD与MGD
- 判断是否是平衡二叉树
- iOS UITableView~datasource(数据源方法)
- Hive(下)
- Java中的static关键字解析
- java核心技术卷 之文本输入
- python中的按位运算符——转 菜鸟教程
- get/post请求,以及参数传递过程中乱码问题
- android 获取连接WiFi的名称
- 莫比乌斯反演专题训练及解答总结
- 写给自己(当记事本就好)
- HDU 6215 队列+链表
- Java加载顺序
- 2017年,再次出发