I have tried to use the example shown here but java showing error message of
"AttributeSet cannot be resolved to a type"
That is why I am trying to use another method of allowing only digits:
txtUsername.addKeyListener(new MyKeyListener());
public class MyKeyListener extends KeyAdapter{
public void keyPressed(KeyEvent ke){
System.out.println("Key pressed code = "+ke.getKeyCode());
if (ke.getKeyCode()>=48 && ke.getKeyCode()<=57)
return true;
else
return false;
}
}
But of course it is not working because keyPressed method is void. So, what to do in order to print only digits in textfield?
My version which rejects unwanted characters completely(I tried):
val2 = new JTextField();
val2.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
try {
char input = e.getKeyChar(); //checks each key pressed
// in other words it prevents input of any character other than 0-9 or .
try {
int i = Integer.parseInt(val2.getText());
valid1.setText(""); //valid1 is a label for the message
} catch (Exception e2) {
// TODO: handle exception
valid1.setText("Invalid Number!");
}
if((!Character.isDigit(input)) && !(input == '.')) { //numbers accept "."
e.consume();
// event won't be sent for any further event listeners
try {
int i = Integer.parseInt(val2.getText()); // checks if the string can be converted to int
double i1 = Double.parseDouble(val2.getText()); // checks if string can be converted to double
valid1.setText("");
} catch (Exception e2) {
// TODO: handle exception
// if it is not in a valid format.. it will generate error message
valid1.setText("Invalid Number!");
}
}
else {
// if format and characters are fine... no output
valid1.setText("");
}
}
catch (Exception e2) {
// TODO: handle exception
// for unexpected errors
valid1.setText("Error");
}
}
});
// auto generated for design of the textfield
val2.setColumns(10);
val2.setBounds(236, 11, 126, 43);
panel.add(val2);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With