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

JTextPane

文本组件中的高富帅。它可以容纳格式化文字、图片、任意组件及段落格式等。我们将专门使用一节来介绍它。详见《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);
    }
}

运行效果:

时间: 2024-10-12 19:13:19

Swing-文本输入组件(一)的相关文章

Java Swing界面编程(17)---单行文本输入组件:JTextField

package com.beyole.util; import java.awt.GridLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; public class test15 { public static void main(String[] args) { JFrame frame = new JFrame("Crystal");// 实例化窗

Java Swing界面编程(18)---单行文本输入组件:JTextField

以下的程序与上一例有一点区别,仔细对比不难发现其中的不同之处. package com.beyole.util; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; public class test17 { public static void main(String[] args) { JFrame frame = new JFrame("Crystal"); JT

Java Swing界面编程(20)---多行文本输入组件:JTextArea

如果要输入多行文本,则可以使用JTextArea实现多行文本的输入. package com.beyole.util; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextArea; public class test19 { public static void main(String[] args) { JFrame frame = new JFrame("Crystal");/

Java Swing界面编程(19)---密码输入组件:JPasswordField

JTextField是使用明文方式进行数据显示的,如果现在需要将回显的内容设置成其他字符,则可以使用JPasswordField类. package com.beyole.util; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPasswordField; public class test18 { public static void main(String[] args) { JFrame

实验十四 Swing图形界面组件

实验十四  Swing图形界面组件 实验时间 20178-11-29 1.实验目的与要求 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及常用API: 2.实验内容和步骤 实验1: 导入第12章示例程序,测试程序并进行组内讨论. 测试程序1 在elipse IDE中运行教材479页程序12-1,结合运行结果理解程序: 掌握各种布局管理器的用法: 理解GUI界面中事件处理技术的用途. 在布局管理应用代码处添加注释: 测试结果: 这个程序是一个网格布局,网格布局像一

设置警告框样式为带有两个文本输入的警告框,用于收集用户收货地址和联系电话。并选择合适的代理方法,当警告框上的两输入框有一个为空时限制“购买”按钮点击。

收集购物信息  iOS项目 倒计时:588 步骤 /.panel-heading 项目需求 设置警告框样式为带有两个文本输入的警告框,用于收集用户收货地址和联系电话.并选择合适的代理方法,当警告框上的两输入框有一个为空时限制“购买”按钮点击. #import "TableViewController.h" @interface TableViewController ()<UIAlertViewDelegate> @property (nonatomic, strong)

【Java Swing探索之路系列】之二:Java Swing布局面板组件

作者:郭嘉 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 面板指的是容器,即中间容器类,可以将基本组件放置在其中,组成丰富多彩的用户界面. 一 JPanel 在JPanel的使用中,有一个双缓冲的概念,这个技术旨在改进频繁变化的组件显示效果.可以在JPanel初始化的时候进行定义如下所示: 举例 展示如何使用JPanel中间容器类. import javax.

iOS9使用提示框进行文本输入的正确实现方式

我在之前写过一篇博客<iOS9使用提示框的正确实现方式>,主要讲了如何使用UIAlertController替换UIAlertView进行提示框的实现.今天我们将会来实现一下在提示框中如何进行文本输入.该功能可以让用户进行密码确认等功能. 实现代码如下: #import "SecondViewController.h" #import "AppDelegate.h" @interface SecondViewController () @end @imp

JAVA学习Swing章节按钮组件JButton的简单学习

package com.swing; import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.URL; import javax.swing.Icon; import javax.swing.ImageIcon;