文本框控件JTextField和JTextArea的使用详解

时间:2024-04-12 10:48:34

1 文本框

JTextField 即 单行文本框,JTextArea 即 多行文本框。

文本框是文本的编辑器,可以指定文本的初始数据 即默认文本(text),可以指定文字的颜色(foreground)、文字的字体(font)、文字的对齐方式(horizontalAlignment)、当前的工具提示(toolTipText)(注意:JTextArea 不可指定文字的对齐方式)

2 JTextField

JTextField 是一个轻量级组件,它允许编辑单行文本。

  1. JTextField的常用构造方法:

JTextField() 构造一个新的 TextField。JTextField() 构造一个新的 TextField。

JTextField(int columns) 构造一个具有指定列数的新的空 TextField。

JTextField(String text) 构造一个用指定文本初始化的新TextField。

JTextField(String text, int columns) 构造一个用指定文本和列初始化的新TextField。

  1. JTextField的常用方法:

SetText(string) 设置文本域中的文本值

GetText()返回文本域中的输入文本值

getColumns()返回文本域的列数

setEditable(Boolean) 设置文本域是否为只读状态

  1. 示例代码
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class JTextFieldTest extends JFrame{
    JFrame lc;
    JTextField lc1,lc2,lc3,lc4;

    public static void main(String[] args) {
        new JTextFieldTest();
    }
    public JTextFieldTest() {

        setTitle("TextFieldTest");

        lc1 = new JTextField("长沙学院");
        lc2 = new JTextField("计数院");
        lc3 = new JTextField("计科一班");
        lc4 = new JTextField("102");


        lc1.setFont(new Font("斜体",Font.ITALIC|Font.ITALIC,32));
        lc2.setFont(new Font("斜体",Font.LAYOUT_LEFT_TO_RIGHT|Font.BOLD,24));
        lc4.setFont(new Font("粗体",Font.BOLD|Font.ITALIC,16));
        //设置文本的水平对齐方式
        lc1.setHorizontalAlignment(JTextField.CENTER);
        lc4.setHorizontalAlignment(JTextField.CENTER);

        setLayout(null);
        //设置绝对布局
        lc1.setBounds(10, 0,300,50);
        lc2.setBounds(10, 100, 300,50);
        lc3.setBounds(10, 200, 300,50);
        lc4.setBounds(10, 300, 300,50);

        add(lc1);
        add(lc2);
        add(lc3);
        add(lc4);

        setSize(400, 400);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }
}

运行结果如下:
文本框控件JTextField和JTextArea的使用详解

3 JTextArea

  1. JTextArea的常用构造方法:

JTextArea() 构造新的 TextArea。

    JTextArea(String  text) 构造显示指定文本的新的 TextArea。

    JTextArea(int rows, int columns)  构造具有指定行数和列数的新的空 TextArea。

    JTextArea(String  text, int rows, int columns)  构造具有指定文本、行数和列数的新的 TextArea。

构造示例:

JTextArea t1 = new JTextArea();
JTextArea t2 = new JTextArea(2, 8);
JTextArea t3 = new JTextArea("JTextArea3");
JTextArea t4 = new JTextArea("JTextArea4", 5, 10);
  1. JTextArea的常用方法:
    使用示例:

    t1.setText(“JTextArea1”);// setText()设置文本显示的内容

    t2.append("JTextArea2");// append()方法会将给定文本追加到文档结尾。
    
    t4.setLineWrap(true);// 设置文本区的换行策略。
    
    t4.setFont(new Font("标楷体", Font.BOLD, 16));  //设置当前字体。
    
    t4.setTabSize(2);//使用setTabSize()方法设置[Tab]键的跳离距
    

将JTextArea放入JScrollPane中,这样就能利用滚动的效果看到输入超过JTextArea高度的文字.
test的代码如下:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
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.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class JTextAreaTest extends JFrame implements ActionListener{


    JPanel jpanel;
    JButton jb1, jb2, jb3;
    JTextArea jta = null;
    JScrollPane jscrollPane;

    public JTextAreaTest() {

        setTitle("JTextAreaTest");
        setLayout(new BorderLayout());

        jta = new JTextArea(10, 15);
        jta.setTabSize(4);
        jta.setFont(new Font("标楷体", Font.BOLD, 16));
        jta.setLineWrap(true);// **自动换行功能
        jta.setWrapStyleWord(true);// **断行不断字功能
        jta.setBackground(Color.black);
        jta.setForeground(Color.white);

        jscrollPane = new JScrollPane(jta);
        jpanel = new JPanel();
        jpanel.setLayout(new GridLayout(1, 3));

        jb1 = new JButton("复制");
        jb1.addActionListener(this);
        jb2 = new JButton("粘贴");
        jb2.addActionListener(this);
        jb3 = new JButton("剪切");
        jb3.addActionListener(this);

        jpanel.add(jb1);
        jpanel.add(jb2);
        jpanel.add(jb3);

        add(jscrollPane, BorderLayout.CENTER);
        add(jpanel, BorderLayout.SOUTH);

        setSize(400, 300);
        setLocation(400, 200);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);


    }

    // 覆盖接口ActionListener的方法actionPerformed
    public void actionPerformed(ActionEvent e) {

        if (e.getSource() == jb1) {
            jta.copy();
        } else if (e.getSource() == jb2) {
            jta.paste();
        } else if (e.getSource() == jb3) {
            jta.cut();
        }
    }

    public static void main(String[] args) {
        new JTextAreaTest();
    }
}

示例图片:
文本框控件JTextField和JTextArea的使用详解