我正在尝试仅使用数字字符(0-9)向4个JTextFields添加验证。我对一个JTextField的代码是:
txtf_xCoord.addKeyListener(new KeyAdapter()
{
@Override
public void keyTyped(KeyEvent keyEvent)
{
if (txtf_xCoord.getText().length() < 3 && keyEvent.getKeyChar() >= '0' && keyEvent.getKeyChar() <= '9')
{
// Optional
super.keyTyped(keyEvent);
}
else
{
// Discard the event
keyEvent.consume();
}
}
});
是否有更有效的方法将此验证添加到其余的JTextField而无需复制和粘贴每个代码?
答案 0 :(得分:3)
您可以使用InputVerifier,查看以下代码:
public class NumericVerifier extends InputVerifier {
@Override
public boolean verify(JComponent input) {
//Check type of the control
String text = "";
if(input instanceof JTextField) {
JTextField tf = (JTextField) input;
text = tf.getText().trim();
}
boolean matches = text.matches("^\\d+$");
input.setBackground( ( matches ) ? Color.WHITE : Color.RED);
return matches;
}
}
答案 1 :(得分:2)
最简单,最安全的方法是将DocumentFilter的一个实例添加到JTextFields
永远不要将KeyListener用于Swing JComponent,而是使用KeyBindings
答案 2 :(得分:1)
您可以将您的匿名类转换为真正的类,然后在任何地方实例化该类。现在,您还可以查看JFormattedTextField