当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级Java文本输入学习教程
发布时间:2011/12/29 16:56:10 来源:城市学习网 编辑:ziteng

8.3 文本输入

  在java中,能够用于文本输入的组件包括JTextField(文本框)、JTextArea(文本区)以及 JPasswordField(密码框),JLabel(标签)不支持文本输入,但可以容纳文本。

  8.3.1 JTextFileld 文本框

  JTextField文本框是一个允许编辑单行文本的swing组件,JTextField提供了多个构造方法用于创建JTextField对象。具体见下表8-3。

表8-3 JTextField构造方法

构造方法

说明

public JTextField()

构造一个新的 TextField。初始字符串为 null,列数为 0

public JTextField(String text)

构造一个用指定文本初始化的新TextField。列数为 0

public JTextField(int columns)

构造一个具有指定列数的新的空TextField。初始字符串为 null。

public JTextField
(String text,int columns)

构造一个用指定文本和列初始化的新 TextField。text:文本值,columns:列数

  JTextField有两个重要的方法setText(String t)和getText()分别用于设置文本框的显示文本和获取当前文本框的文本。不过这两个方法都不是JTextField本身提供的方法,而是其父类JTextComponent所提供的。

  JTextField类可引发ActionEvent事件,当用户在文本框中按下回车键时触发。

  8.3.2 JTextArea 文本区

  JTextArea文本区是一个允许编辑多行文本的swing组件,JTextArea提供了多个构造方法用于创建JTextArea对象。具体见下表8-4。

表8-4 JTextArea构造方法

构造方法

说明

JTextArea()

构造新的 TextArea。初始字符串为 null,行/列设置为 0。

JTextArea(String text)

构造显示指定文本的新的 TextArea。行/列设置为 0

JTextArea(int rows,
int columns)

构造具有指定行数和列数的新的空 TextArea。初始字符串为 null

JTextArea(String text,
int rows,int columns)

构造具有指定文本、行数和列数的新的 TextArea。text:文本值,rows:行数,columns:列数

  因为JTextArea是JTextComponent的直接子类,因此与JTextField一样,也可以通过setText(String t)和getText()方法设置和获取文本区的文本值。

  JTextArea类可引发ActionEvent事件,当用户在文本区中按下回车键时触发。

  8.3.3 JPasswordField密码框

  在AWT组件中,并没有单独的密码框组件,而是通过TextField的一个setEchoChar()方法来得到密码框,但在Swing中则单独通过一个类JPasswordField来表示。密码框是文本框JTextField组件的简单扩展。因此,其构造方法与JTextField相类似,这里不再介绍。JPasswordField类中有几个重要方法,如下:

表8-5 JPasswordField类常用构造方法

成员方法

说明

public char[] getPassword()

获得密码的字符数组表示,用来替代getText()方法

public void setEchoChar(char c)

设置此 JPasswordField 的回显字符

public char getEchoChar()

返回要用于回显的字符

  8.3.4 JLabel标签

  JLabel是一个静态组件,该组件可以显示一行静态文本,一般只是一个说明性的文字,而不接受用户的输入,也无事件响应。

  JLabel提供了如下方法用于构建JLabel对象

表8-6  JLabel构造方法

构造方法

说明

JLabel()

创建无图像并且其标题为空字符串的 JLabel类对象

JLabel(Icon image)

创建具有指定图像的 JLabel类对象

public JLabel(Icon image,

int horizontalAlignment)

创建具有指定图像和水平对齐方式的 JLabe类对象

JLabel(String text)

创建具有指定文本的 JLabel类对象

JLabel(String text,Icon icon,
     int horizontalAlignment)

创建具有指定文本、图像和水平对齐方式的 JLabel类对象

JLabel(String text,
int horizontalAlignment)

创建具有指定文本和水平对齐方式的 JLabel类对象

  构造方法中各参数意义

  Image:显示在JLabel上的图标。

  horizontalAlignment:JLabel上文字的对齐方式,其值为int枚举型,值包括SwingConstants.LEFT、SwingConstants.CENTER、SwingConstants.RIGHT、SwingConstants.LEADING 和 SwingConstants.TRAILING。

  text:显示在JLabel上的文字。

  以下的例8-4演示了本节中所介绍的各个组件的用法,界面可提供用户输入用户名和密码,按下回车后在JTextArea显示区显示用户输入的用户名和密码信息,不允许用户名或密码为空。

  [例8-4]

  import java.awt.*;

  import javax.swing.*;

  import java.awt.event.*;

  class TextInputTest extends JFrame{

  private JTextField userName = new JTextField(10);

  private JTextArea ta = new JTextArea(4,10);

  private JPasswordField password = new JPasswordField(10);

  private JLabel label1 = new JLabel("用户名");

  private JLabel label2 = new JLabel("密 码");

  public TextInputTest(String title){

  super(title);

  password.setEchoChar('*');//设置回显字符

  Container contentPane = this.getContentPane();

  JPanel panelNorth = new JPanel();

  JPanel panelCenter = new JPanel();

  panelNorth.add(label1);

  panelNorth.add(userName);

  panelCenter.add(label2);

  panelCenter.add(password);

  contentPane.add(panelNorth,BorderLayout.NORTH);

  contentPane.add(panelCenter,BorderLayout.CENTER);

  contentPane.add(ta,BorderLayout.SOUTH);

  pack();

  //监听userName和password控件

  userName.addActionListener(new MyActionListener());

  password.addActionListener(new MyActionListener());

  this.setVisible(true);

  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  }  [NextPage]

  private class MyActionListener implements ActionListener{

  public void actionPerformed(ActionEvent arg0) {

  String name = userName.getText();

  char[] pwd = password.getPassword();

  if(name.length()==0){

  ta.setText("请输入用户名");

  return;

  }

  if(pwd.length==0){

  ta.setText("请输入密码");

  return;

  }

  //new String(pwd)将字符数组pwd转换为字符串

  ta.setText("用户名:"+name+"\n密码:"+new String(pwd));

  }

  }

  }

  public class Test8_4 {

  public static void main(String[] args) {

  new TextInputTest("文本输入控件测试");

  }

  }

  程序运行结果如图8-5所示

图8-5 例8-4不同输入情况下的运行结果

  例8-4中用到了容器的嵌套,JFrame的North和Center添加的都是JLabel对象,而两个JLabel对象里又添加了其他组件,在程序中没有使用setLayout设置JFrame和JLabel的布局策略,原因是两者的默认布局策略正好可以满足我们的布局。

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15080520号-20
珠峰网 版权所有 All Rights Reserved