在Java开发中,TextBox(文本框)是最常用的基础组件之一,主要用于接收用户输入或显示文本信息,根据不同的图形用户界面(GUI)工具包,TextBox的实现和使用方式有所差异,本文将围绕Java Swing和JavaFX两大主流框架,详细介绍TextBox的创建、配置及事件处理等核心用法。

Swing框架中的JTextField使用
Swing是Java早期广泛使用的GUI工具包,其文本框组件主要通过JTextField实现,创建JTextField时,可通过构造方法指定初始文本、列数等参数。
JTextField textField = new JTextField("默认文本", 20); // 20表示列数
基本配置
JTextField提供了丰富的属性设置方法:
setText(String text):设置文本框内容。getText():获取当前文本内容。setEditable(boolean):设置是否可编辑(默认为true)。setHorizontalAlignment(int):设置文本对齐方式(如SwingConstants.LEFT)。setColumns(int):调整文本框宽度(以字符数为单位)。
事件监听
用户输入或操作文本框时,常需触发相应事件,例如监听文本变化:
textField.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
System.out.println("文本插入:" + textField.getText());
}
@Override
public void removeUpdate(DocumentEvent e) {
System.out.println("文本删除:" + textField.getText());
}
@Override
public void changedUpdate(DocumentEvent e) {
// 用于处理属性变化(如字体)
}
});
还可通过ActionListener监听回车键事件:
textField.addActionListener(e -> {
System.out.println("回车键触发,内容:" + textField.getText());
});
密码框与只读文本框
Swing提供了JPasswordField用于密码输入,其内容显示为掩码字符:

JPasswordField passwordField = new JPasswordField(20); String password = new String(passwordField.getPassword()); // 获取密码
若需实现只读文本框,只需调用setEditable(false)即可。
JavaFX框架中的TextField使用
JavaFX是Java推荐的现代GUI工具包,其文本框组件为TextField,相比Swing提供了更丰富的功能,创建方式如下:
TextField textField = new TextField("默认文本");
基本属性
TextField的属性通过Setter方法配置:
setText(String):设置文本内容。getText():获取文本内容。setEditable(boolean):控制是否可编辑。setAlignment(Pos):设置文本对齐(如Pos.CENTER)。setPromptText(String):设置提示文本(输入前显示的灰色文字)。
事件处理
JavaFX支持多种事件类型,例如监听文本变化:
textField.textProperty().addListener((observable, oldValue, newValue) -> {
System.out.println("文本变化:" + newValue);
});
监听回车键事件可通过onAction属性实现:

textField.setOnAction(e -> {
System.out.println("回车键触发:" + textField.getText());
});
高级功能
JavaFX的TextField支持更多高级特性:
- 输入验证:通过
TextFormatter限制输入格式,例如仅允许数字:UnaryOperator<TextFormatter.Change> filter = change -> { if (change.isContentChange()) { String newText = change.getControlNewText(); if (!newText.matches("\\d*")) { return null; // 拒绝非数字输入 } } return change; }; textField.setTextFormatter(new TextFormatter<>(filter)); - 样式定制:通过CSS设置外观:
.text-field { -fx-background-color: #f0f0f0; -fx-border-color: #ccc; }在代码中应用样式:
textField.getStyleClass().add("text-field");
最佳实践与注意事项
- 线程安全:GUI操作需在JavaFX Application Thread或Swing Event Dispatch Thread中执行,避免多线程冲突。
- 资源释放:若文本框涉及大量数据,及时清除引用或调用
setText("")释放内存。 - 用户体验:为文本框设置合适的
promptText或toolTip,提升用户操作友好性。 - 安全性:密码等敏感信息应使用
JPasswordField或JavaFX的PasswordField,避免明文存储。
无论是Swing的JTextField还是JavaFX的TextField,掌握其核心用法和事件处理机制,都能高效实现用户交互功能,开发者可根据项目需求选择合适的工具包,并结合实际场景灵活运用文本框组件。

















