JTextField
Hola,
Puedo tener un JTextField que solo me permita meter números. Por ejemplo, si tengo un campo edad, que si yo le meto: vcfsf, me de error, no tener que comprobar luego si lo que se ha metido es un numero o no.
Gracias por ayudarme.
Puedo tener un JTextField que solo me permita meter números. Por ejemplo, si tengo un campo edad, que si yo le meto: vcfsf, me de error, no tener que comprobar luego si lo que se ha metido es un numero o no.
Gracias por ayudarme.
Utiliza KeyListener y comprueba que el carácter metido es válido en el rango qeu te interese.
Saludos.
Saludos.
En primer lugar, gracias por tu ayuda. Eso estaba haciendo ahora, pero tengo un problema, con qué evento?
KeyTyped, KeyReleased, KeyPressed?
Y si quiero coger un número negativo? Tal y como lo estoy haciendo, en cuanto meto el - me dice que meta un número...
Gracias otra vez.
KeyTyped, KeyReleased, KeyPressed?
Y si quiero coger un número negativo? Tal y como lo estoy haciendo, en cuanto meto el - me dice que meta un número...
Gracias otra vez.
O prueba esto:
tField.setDocument(new javax.swing.text.DefaultStyledDocument(){
public void insertString(int offs, String str, javax.swing.text.AttributeSet a)throws javax.swing.text.BadLocationException{
if (str==null) str="";
char[] cadena=str.toCharArray();
for (int i=0;i<cadena.length;i++){
if (!Character.Digit(cadena[i])){
java.awt.Toolkit.getDefaultToolkit().beep();
return;
}
}
super.insertString(offs, str, a);
}});
Como desaparecen los espacios al inicio de linea no se entenderá nada, pero bueno...
Saludos!
<B>?</B>
tField.setDocument(new javax.swing.text.DefaultStyledDocument(){
public void insertString(int offs, String str, javax.swing.text.AttributeSet a)throws javax.swing.text.BadLocationException{
if (str==null) str="";
char[] cadena=str.toCharArray();
for (int i=0;i<cadena.length;i++){
if (!Character.Digit(cadena[i])){
java.awt.Toolkit.getDefaultToolkit().beep();
return;
}
}
super.insertString(offs, str, a);
}});
Como desaparecen los espacios al inicio de linea no se entenderá nada, pero bueno...
Saludos!
<B>?</B>
Siento ser pesadito, parece algo super simple, pero no me funciona.... lo que hago es lo siguiente:
private void valorKeyTyped(java.awt.event.KeyEvent evt) {
if(evt.getKeyChar()!='-'){
try{
Integer aux = new Integer(valor.getText());
int d = aux.intValue();
}
catch(Exception e){
JOptionPane.showMessageDialog(this, "El campo debe ser un número", "ERROR", JOptionPane.ERROR_MESSAGE);
evt.consume();
valor.setText("");
}
}
}
¿Qué es lo que hago mal? Porque si empiezo a teclear - no pasa nada pero si después meto el 7 me da el error porque supongo que me hacer la prueba solo con el -
gracias otra vez.
private void valorKeyTyped(java.awt.event.KeyEvent evt) {
if(evt.getKeyChar()!='-'){
try{
Integer aux = new Integer(valor.getText());
int d = aux.intValue();
}
catch(Exception e){
JOptionPane.showMessageDialog(this, "El campo debe ser un número", "ERROR", JOptionPane.ERROR_MESSAGE);
evt.consume();
valor.setText("");
}
}
}
¿Qué es lo que hago mal? Porque si empiezo a teclear - no pasa nada pero si después meto el 7 me da el error porque supongo que me hacer la prueba solo con el -
gracias otra vez.
Estas seguro de que ese es el codigo que estas ejecutando? Porque el if de comparación entre un int y un char no debe compilar.
Por otra parte desde qué metodo llamas al llamado por ti valorKeyTyped?
Saludos.
Por otra parte desde qué metodo llamas al llamado por ti valorKeyTyped?
Saludos.
SÃ, pero es que no me devuelve un int.. estoy usando evt.getKeyChar... me devuelve un char.
Siempre puedes coger y ponerle un oyente al JTextField y una vez que tienes el oyente cada vez que cabie le coges el 1º caracter por la derecha y lo conviertes a ASCII (creo que hay una funcion que te lo hace) y si el valor que te da no está comprendido entre el 48 y el 57 (creo q son los valores númericos) te salga el mensaje de error o directamente te borre el caracter :)
espero que lo entiendas
espero que lo entiendas