文字输入组件的使用与介绍

++ 文字输入组件的使用与介绍

9-1:认识Swing的文字输入组件:
Swing与文字输入有关的组件分别是JTextField、JPasswordField、JTextArea、JEditorPane与 JTextPane.JTextField与JPasswordField为单行的文本编辑器;JTextArea为多行的文本编辑器; JEditorPane可显示多种文件格式;JTextPane可设置文件各种样式。这些组件都继承了JTextComponent为类,它们之间的关系如下:

|--JTextField--JPasswordField
|
JTextComponent|
|--JTextArea
|
|--JEditorPane--JTextPane

JTextComponent提供了相当多实用的方法,可使处理输入组件更为方便,例如copy(),paste(),cut(),getText(), setText()等相当直觉的方法:另外还有设置是否可编辑(setEditable()),setSelectionEnd(), setSelectionStart())、设置或取得光标位置(getCaretPosition(),setCaretPosition())等等,这些相当常用的方法你都可以在JTextComponent类中找到.
Swing的文字输入组件均以Document来当作数据模式,当输入组件的内容有所改变时,均是更改此Document的内容。因此你可以将同一个 Document内容以不同的输入组件来显示,这就是MVC概念的一个基本应用。Document为一个interface,你可以实现此界面或利用 java提供的默认类来构造文字输入组件。

|---implements-->AbstractDocument---extends->PlainDocument

Document | 
|
|--extends-->StyleDocument---implements--->DefaultStyleDocument---extends--->HTMLDocument

AbstractDocument----extends-->DefaultStyleDocument

PlainDocument是一个实体类,已经实现了AbstractDocument与Document中的所有抽象方法,你可以用此类直接构造出 JTextField、JPasswordField与JTextArea组件;相同的,你可以使用DefaultStyledDocument构造出 JTextPane组件,这些关系我们均会在下面各节中提到。下面我们开始介绍各种文字输入组件的使用:

9-2:使用JTextField组件:
JTextField 继承JTextComponent类,因此它也可以使用JTextComponent抽象类里面许多好用的方法,如copy(),paste(), setText(),isEditable()等等。我们可以在很多地方使用JTextField,JTextField是一个单行的输入组件,那么有没有多行的输入组件呢?有的,就是JTextArea,我们将在后面介绍.

JTextField构造函数:
JTextField()
JTextField(Document doc,String text,int columns):使用指定的文件存储模式建立一个新的JTextField并设置其初始化字符串和字段长度。
JTextField(int columns):建立一个新的JTextField并设置其初始字段长度。
JTextField(String text):建立一个新的JTextField并设置其初始字字符串。
JTextField(String text,int columns):建立一个新的JTextField并设置其初始字符串和字段长度.

9-2-1:构造一般的JTextField组件:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JTextField1{

public static void main(String args[]) {

JFrame f = new JFrame("JTextField1";);
Container contentPane = f.getContentPane();
contentPane.setLayout(new BorderLayout());

JPanel p1 = new JPanel();
p1.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST; //设定Layout的位置
gbc.insets = new Insets(2,2,2,2); //设定与边界的距离(上,左,下,右)

p1.setBorder(BorderFactory.createTitledBorder("您的基本数据";)); 
JLabel l1 = new JLabel("姓名:";); 
JLabel l2 = new JLabel("性别:";); 
JLabel l3 = new JLabel("身高:";); 
JLabel l4 = new JLabel("体重:";); 
JTextField t1 = new JTextField();
JTextField t2 = new JTextField(2);
JTextField t3 = new JTextField("175cm";); 
JTextField t4 = new JTextField("50kg太瘦了",10);

gbc.gridy=1;
gbc.gridx=0;
p1.add(l1,gbc);
gbc.gridx=1;
p1.add(t1,gbc);
gbc.gridy=2;
gbc.gridx=0;
p1.add(l2,gbc);
gbc.gridx=1;
p1.add(t2,gbc);
gbc.gridy=3;
gbc.gridx=0; 
p1.add(l3,gbc);
gbc.gridx=1;
p1.add(t3,gbc);
gbc.gridy=4;
gbc.gridx=0; 
p1.add(l4,gbc);
gbc.gridx=1;
p1.add(t4,gbc);

contentPane.add(p1); 
f.pack(); 
f.show(); 
f.addWindowListener(new WindowAdapter() { 
public void windowClosing(WindowEvent e) { 
System.exit(0); 

}); 
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值