【发布时间】:2013-06-22 02:00:55
【问题描述】:
我限制我的JTextFields 只接受数字。我为此使用了以下代码。
// my textboxes
t1=new JTextField(10);
t2=new JTextField(10);
t3=new JTextField(10);
// for the first one
t1.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
if (!((c >= '0') && (c <= '9') ||
(c == KeyEvent.VK_BACK_SPACE) ||
(c == KeyEvent.VK_DELETE))) {
getToolkit().beep();
e.consume();
}
}
});
假设我有 20 个 texboxes 需要相同的验证检查。那么我们需要将这段代码写 20 次吗?我可以写一个通用的方法来实现这个吗?我是Swing 的新手。
【问题讨论】:
-
无论做什么都不要使用 KeyListener,因为这对复制/粘贴没有影响,并且会以其他方式弄乱 JTextField。使用文档过滤器。您可以在本网站和教程中找到这方面的示例。例如:here.
-
看看这个问题,它应该可以解决你的问题:stackoverflow.com/questions/14215847/… 更准确地说,我的回答。那是一个只接受数字的定制组件。
-
你得到了很多错误的答案。可怜。
-
是的,我们知道了。使用 DOcumentFilter 过滤 JTextfield 有更好的方法。但这不是他问题的重点。他的问题是关于再利用
-
使用
JSpinner,如here所示。
标签: java swing jtextfield keylistener documentfilter