Swing用户界面组件 文本输入练习

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时,允许文本宽度超过控件宽度时自动进行换行。否则超过部分将被遮挡。

JScrollPane

文本没有滚动条,若需要,将文本区插入到滚动窗口中。

JTextArea textArea=new JTextArea(TEXTAREA_ROW,TEXTAREA_COLUMNS);
JScrollPane scrollPane=new JScrollPane(textArea);

想要为组件添加滚动条,只需将它们放入滚动窗格中。

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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值