为了完成实验,强行学习GUI。本次的目的是定义出 一个文本区域,并从指定的路径读取相应的文件进行处理。
JTextArea,文本区域。JTextArea 用来编辑多行的文本。JTextArea 除了允许多行编辑外,其他基本用法和 JTextField 基本一致。
JTextArea 常用构造方法:
1 | /** |
JTextArea 常用方法:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45// 是否自动换行,默认为 false
void setLineWrap(boolean wrap)
// 设置自动换行方式。如果为 true,则将在单词边界(空白)处换行; 如果为 false,则将在字符边界处换行。默认为 false。
void setWrapStyleWord(boolean word)
// 获取文本框中的文本
String getText()
// 追加文本到文档末尾
void append(String str)
// 替换部分文本
void replaceRange(String str, int start, int end)
// 设置文本框的 文本、字体 和 字体颜色
void setText(String text)
void setFont(Font font)
void setForeground(Color fg)
// 获取内容的行数(以换行符计算,满行自动换下一行不算增加行数)
int getLineCount()
// 获取指定行(行数从0开始)的行尾(包括换行符)在全文中的偏移量
int getLineEndOffset(int line)
// 获取指定偏移量所在的行数(行数从0开始)
int getLineOfOffset(int offset)
// 设置颜色,分别为: 光标颜色、呈现选中部分的背景颜色、选中部分文本的颜色、不可用时文本的颜色
void setCaretColor(Color c)
void setSelectionColor(Color c)
void setSelectedTextColor(Color c)
void setDisabledTextColor(Color c)
// 设置文本框是否可编辑
void setEditable(boolean b)
/* 下面方法定义在 java.awt.Component 基类中 */
// 判断组件当前是否拥有焦点
boolean isFocusOwner()
// 设置组件是否可用
void setEnabled(boolean b)
JTextArea 复制粘贴相关方法:1
2
3
4
5
6
7
8
9
10
11
12
13
14// 设置光标开始位置,selectionStart >= 0
void setSelectionStart(int selectionStart)
// 设置光标结束位置,selectionEnd >= selectionStart
void setSelectionEnd(int selectionEnd)
// 复制选中部分文本
void copy()
// 剪切选中部分文本
void cut()
// 粘贴文本到文本框
void paste()
JTextArea 常用监听器:
1 | // 添加焦点事件监听器 |
PS: JTextArea 在使用时通常把它放到 JScrollPane 容器中来使用,以此来实现内容增多时可水平/垂直滚动的效果。
代码示例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38package com.xiets.swing;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main {
public static void main(String[] args) {
JFrame jf = new JFrame("测试窗口");
jf.setSize(250, 250);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
// 创建一个 5 行 10 列的文本区域
final JTextArea textArea = new JTextArea(5, 10);
// 设置自动换行
textArea.setLineWrap(true);
// 添加到内容面板
panel.add(textArea);
// 创建一个提交按钮,点击按钮获取输入文本
JButton btn = new JButton("提交");
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("提交: " + textArea.getText());
}
});
panel.add(btn);
jf.setContentPane(panel);
jf.setVisible(true);
}
}
运行结果