Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1754321
  • 博文数量: 787
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5015
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-22 15:17
文章分类

全部博文(787)

文章存档

2008年(787)

我的朋友

分类:

2008-09-25 16:11:11

  [@more@]

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

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);           
      }       
     });   
    }
}



--------------------next---------------------

阅读(682) | 评论(0) | 转发(0) |
0

上一篇:JAVA鼠标事件

下一篇:窗口与面板的使用

给主人留下些什么吧!~~