在 Java Swing 开发中,JTextField 是最常用的输入组件之一。除了基础的文本录入,我们往往还需要处理焦点变化、键盘事件以及剪贴板操作。下面我们通过一个完整的示例,演示如何构建包含多种交互功能的文本输入界面。
首先初始化主窗口,设置尺寸并居中显示。为了布局清晰,我们使用 JPanel 作为容器,将标签、输入框和按钮依次添加进去。对于 JTextField,建议显式设置字体和偏好尺寸,这样界面在不同系统下看起来更协调。
接下来是核心部分:事件监听。Swing 提供了丰富的监听器接口,我们可以根据需求灵活组合。
- 动作监听:点击按钮时触发,通常用于获取用户输入的文本。
- 焦点监听:当输入框获得或失去焦点时回调,适合做输入前的提示或校验准备。
- 键盘监听:捕获按键事件,比如限制特定字符输入或记录击键序列。
- 剪贴板功能:利用内置的 copy() 和 paste() 方法,无需额外实现即可支持复制粘贴。
- 文本选择:通过 setSelectionStart 和 setSelectionEnd 控制选中范围,配合颜色设置可实现高亮效果。
下面是完整的代码实现,包含了必要的导入语句,直接运行即可观察各事件回调的效果。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SwingTextTest {
public static void main(String[] args) {
JFrame jf = new JFrame();
jf.setSize(400, 400);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JLabel label = new JLabel("请输入姓名");
label.setFont(new Font("楷体", Font.PLAIN, 18));
// 设置文本域
();
txt.setPreferredSize( (, ));
txt.setFont( (, Font.PLAIN, ));
();
btn.addActionListener(e -> System.out.println(txt.getText()));
txt.addFocusListener( () {
{
System.out.println();
}
{
System.out.println();
}
});
txt.addKeyListener( () {
{
System.out.println( + e.getKeyChar());
}
});
();
btnCopy.addActionListener(e -> txt.copy());
();
btnPaste.addActionListener(e -> txt.paste());
();
btnSelect.addActionListener(e -> {
txt.setSelectionStart();
txt.setSelectionEnd(txt.getText().length());
txt.setSelectedTextColor(Color.GREEN);
});
panel.add(label);
panel.add(txt);
panel.add(btn);
panel.add(btnCopy);
panel.add(btnPaste);
panel.add(btnSelect);
jf.setContentPane(panel);
jf.setVisible();
}
}


