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

求相关程序,谢谢了。... 求相关程序,谢谢了。 展开
 我来答
冷叶忆雪
推荐于2017-11-21 · TA获得超过1018个赞
知道小有建树答主
回答量:315
采纳率:0%
帮助的人:165万
展开全部

看代码:

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;

public class Main {

public static void main(String[] args) throws Exception {
JFrame frame = new JFrame("JTextField 只能输入中文,字母,数字");
JLabel label = new JLabel("输入:");
JTextField textField = new JTextField(20);
// 当 JTextField 中内容发生改变时触发
textField.addCaretListener(new TextFieldInputListener());

JPanel panel = new JPanel();
panel.add(label);
panel.add(textField);

frame.add(panel, BorderLayout.CENTER);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

}

class TextFieldInputListener implements CaretListener {

@Override
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));
}
});
}
}

}
匿名用户
2015-11-19
展开全部
正则表达式吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式