Java Swing 文本域

1. 概述

Java Swing 是 Java 编程语言的图形用户界面(GUI)工具包。它提供了一系列的组件,用于创建丰富的用户界面。其中之一是文本域(Text Area),用于在 GUI 应用程序中显示和编辑多行文本。

文本域提供了一种简单的方式来显示和编辑多行文本,用户可以在其中输入和查看文本。它可以用于各种用途,例如显示日志文件、编辑代码、撰写备注等。在本文中,我们将学习如何使用 Java Swing 创建和操作文本域。

2. 创建文本域

要创建文本域,我们需要使用 JTextArea 类。以下是创建一个简单文本域的示例代码:

import javax.swing.*;

public class TextAreaExample {

    public static void main(String[] args) {
        // 创建文本域对象
        JTextArea textArea = new JTextArea();

        // 创建一个滚动面板,用于显示文本域
        JScrollPane scrollPane = new JScrollPane(textArea);

        // 创建一个顶层容器(如 JFrame),并将滚动面板添加到容器中
        JFrame frame = new JFrame();
        frame.add(scrollPane);

        // 设置窗口的大小和关闭行为
        frame.setSize(400, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 显示窗口
        frame.setVisible(true);
    }
}

在上面的示例中,我们创建了一个文本域对象 textArea,然后将其添加到一个滚动面板 scrollPane 中。最后,我们创建了一个顶层容器 frame(使用 JFrame 类),并将滚动面板添加到容器中。设置窗口的大小和关闭行为后,我们通过调用 setVisible(true) 方法显示窗口。

3. 设置文本域的属性

文本域提供了许多属性,可以用来自定义其外观和行为。以下是一些常用的属性和方法:

  • setText(String text):设置文本域的文本内容。
  • getText():获取文本域的文本内容。
  • setEditable(boolean editable):设置文本域是否可编辑。
  • setLineWrap(boolean wrap):设置文本域是否自动换行。
  • setWrapStyleWord(boolean wrap):设置文本域是否按单词换行。

下面是一个示例代码,演示如何使用这些属性:

import javax.swing.*;

public class TextAreaExample {

    public static void main(String[] args) {
        JTextArea textArea = new JTextArea();

        // 设置文本域的文本内容
        textArea.setText("Hello, world!");

        // 获取文本域的文本内容
        String text = textArea.getText();
        System.out.println("文本内容:" + text);

        // 设置文本域是否可编辑
        textArea.setEditable(false);

        // 设置文本域是否自动换行
        textArea.setLineWrap(true);

        // 设置文本域是否按单词换行
        textArea.setWrapStyleWord(true);

        JScrollPane scrollPane = new JScrollPane(textArea);
        JFrame frame = new JFrame();
        frame.add(scrollPane);
        frame.setSize(400, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

4. 监听文本域的事件

我们可以使用事件监听器来监听文本域的事件,例如文本改变事件、焦点事件等。以下是一个示例代码,演示如何监听文本改变事件:

import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

public class TextAreaExample {

    public static void main(String[] args) {
        JTextArea textArea = new JTextArea();

        // 添加文本改变事件监听器
        textArea.getDocument().addDocumentListener(new DocumentListener() {
            public void changedUpdate(DocumentEvent e) {
                // 当文本内容发生改变时调用该方法
                System.out.println("文本内容已改变");
            }

            public void insertUpdate(DocumentEvent e) {
                // 当有文本插入时调用该方法
                System.out.println("有文本插入");
            }

            public void removeUpdate(DocumentEvent e) {
                // 当有文本删除时调用该方法
                System.out.println("有文本删除");
            }
        });

        JScrollPane scrollPane = new JScrollPane(textArea);
        JFrame frame = new JFrame();
        frame.add(scroll