限制swing中的JTextField只能输入中文,字母,数字。



JTextField textField = new JTextField();
textField.addCaretListener(new CaretListener() {

public void caretUpdate(CaretEvent e) {
        JTextField textField = (JTextField) e.getSource(); // 获得触发事件的 JTextField
        String text = textField.getText();
        if (text.length() == 0) {
            return;
        }
        char ch = text.charAt(text.length() - 1);
        if (!(ch >= '0' && ch <= '9' // 数字
                || ch >= 'A' && ch <= 'z' // 字母
                || ch >= '\u4E00' && ch <= '\u9FA5')) { // 中文,最常用的范围是 U+4E00~U+9FA5,也有使用 U+4E00~ U+9FFF 的,但目前 U+9FA6~U+9FFF 之间的字符还属于空码,暂时还未定义,但不能保证以后不会被定义
            JOptionPane.showMessageDialog(textField, "只能输入中文,字母,数字""提示", JOptionPane.INFORMATION_MESSAGE);
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    // 去掉 JTextField 中的末尾字符
                    textField.setText(text.substring(0, text.length() - 1));
                }
            });
        }
}
});

你可能感兴趣的:(限制swing中的JTextField只能输入中文,字母,数字。)