Swing JTextField空间输入内容的bug

有一个文本框JTextField,现有的功能是:只能输入数字,而且最多只能输入6位数。但目前有个bug,比如我输入1234,然后双击,这时数字就全选中了,我就可以重新输入... 有一个文本框JTextField,现有的功能是:只能输入数字,而且最多只能输入6位数。
但目前有个bug,比如我输入1234,然后双击,这时数字就全选中了,我就可以重新输入内容,这状态是正确的。
但是当如果我输入6位数(在允许的长度下输入满),这时再双击,数字虽然全选中了,但是没法输入内容!只能按退格键删除再输入。
怎么能解决这种双击之后无法输入内容的bug呢?
现在的代码如下:

public JTextField getMenusTaxisIdText() {
if (menusTaxisIdText == null) {
menusTaxisIdText = new JTextField();
menusTaxisIdText.setPreferredSize(new Dimension(100, 27));
menusTaxisIdText.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
pressEnter(queryButton, e, true);
if(menusTaxisIdText.getText().length()>5){
e.consume();
}
}

});
}

protected void pressEnter(JButton queryButton, KeyEvent e, boolean isNum) {
char c = e.getKeyChar();
if (c == '\n') {
if (queryButton != null)
queryButton.doClick();
}
if (isNum) {
if (Character.isDigit(c))
return;
e.consume();
}
}
展开
 我来答
百度网友12ee0fd
2013-07-24 · TA获得超过4.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:66%
帮助的人:1965万
展开全部
使用一个定制的Document,而不是处理keyEvent
追问
可以具体说一下怎么使用Document替换现有功能吗?而且还能个改正这个bug
追答
继承PlainDocument重写insertString方法
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式