Java如何将键侦听器事件处理程序添加到JTextField?
在这个小的Swing示例中,我们演示了如何使用java.awt.event.KeyAdapter类来处理文本字段组件的键盘事件。该代码段会将在JTextField组件中键入的字符更改为大写。
此用例的更好方法是改用DocumentFilter类。请参见以下示例,如何将JTextField文本格式化为大写?
package org.nhooo.example.swing; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.SwingUtilities; import javax.swing.WindowConstants; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.HeadlessException; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; public class UppercaseTextFieldDemo extends JFrame { public UppercaseTextFieldDemo() throws HeadlessException { initComponents(); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> new UppercaseTextFieldDemo().setVisible(true)); } protected void initComponents() { //设置默认表单大小,关闭事件和布局管理器 setSize(250, 250); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT)); //为我们的演示应用程序创建标签和文本字段,然后添加 //框架内容窗格对象的组件。 JLabel usernameLabel = new JLabel("Username: "); JTextField usernameTextField = new JTextField(); usernameTextField.setPreferredSize(new Dimension(150, 20)); getContentPane().add(usernameLabel); getContentPane().add(usernameTextField); //为文本字段注册一个KeyListener。使用KeyAdapter类 //允许我们实施我们要监听的唯一关键监听器事件, //在此示例中,我们使用keyReleased事件。 usernameTextField.addKeyListener(new KeyAdapter() { public void keyReleased(KeyEvent e) { JTextField textField = (JTextField) e.getSource(); String text = textField.getText(); textField.setText(text.toUpperCase()); } }); } }