Swing控件中,能够实现用户输入的有JTextField、JPasswordField、JTextArea和JTextPane。下面分别进行介绍。
JTextField
最简单的文本控件,常见的登陆界面中就是使用得它。其文本无法换行,也不支持滚动条,文本长度超出控件宽度后在视觉上会遮挡一部分内容,因此建议提前预计文本长度,并使用textField.setColumns(int arg0)将其列数设置的稍大一点。之后,必须调用revalidate()重新计算控件大小。
基本方法:
JPasswordField
性质与JTextField基本相同,区别在于输入内容非明文。可使用setEchoChar(char arg0)设置回显字符,默认为星号。
基本方法:
JTextArea
较大面积的输入区域,比如记事本、word的编辑区域。其中的内容可包含多行,每一行内容使用\n进行分割。该控件常常需要使用滚动条,然而默认是没有的,必须手动添加。
基本方法:
基本的setText()/getText()之类函数不在重复,给出下面这个:
public void setLineWrap(boolean wrap)
该方法设置为true时,允许文本宽度超过控件宽度时自动进行换行。否则超过部分将被遮挡。
文本组件中的高富帅。它可以容纳格式化文字、图片、任意组件及段落格式等。我们将专门使用一节来介绍它。详见《Swing-文本输入组件(二)》
示例代码:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingConstants; /*
* source code from 《java核心技术 卷1 基础知识》 P323
*/
public class TextComponentFrame extends JFrame { int DEFAULT_WIDTH = 600;
int DEFAULT_HEIGHT = 400; public TextComponentFrame() {
setTitle("TextComponentFrame");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); //本frame包含三大板块
JPanel northPanel = new JPanel();
JScrollPane scrollPane = null;
JPanel southPanel = new JPanel();
add(northPanel, BorderLayout.NORTH);
add(southPanel, BorderLayout.SOUTH); //先来构造northPanel,它包含两个控件
final JTextField textField = new JTextField();
final JPasswordField passwordField = new JPasswordField(); northPanel.setLayout(new GridLayout(2, 2));
northPanel.add(new JLabel("UserName:", SwingConstants.RIGHT));//靠右对齐
northPanel.add(textField);
northPanel.add(new JLabel("Password:", SwingConstants.RIGHT));//靠右对齐
northPanel.add(passwordField); //再来构造中间板块,它包含一个textArea
final JTextArea textArea = new JTextArea();
scrollPane = new JScrollPane(textArea);
add(scrollPane, BorderLayout.CENTER);//添加到窗体 //构造southPanel,它包含一个button
southPanel.setLayout(new GridLayout(2, 2));
JButton insertButton = new JButton("insertButton");
insertButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
textArea.append("UserName: " + textField.getText() + "\n"
+ "Password:" + new String(passwordField.getPassword())
+ "\n");
}
});
southPanel.add(insertButton);
} public static void main(String[] args) {
//创建窗体并指定标题
TextComponentFrame frame = new TextComponentFrame();
//关闭窗体后退出程序
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//自动适配所有控件大小
//frame.pack();
//设置窗体位置在屏幕*
frame.setLocationRelativeTo(null);
//显示窗体
frame.setVisible(true);
}
}
运行效果: