Validações!

Tenho um jTextField e não quero que ele aceite letras e numeros negativos, como faço isso?

Obrigado.

A validação pode ser feita com InputVerifier, ou então, pode implementar um Document que não permita a inserção de letras e sinal de menos.

eai cara blz?

mais como eu faço isso? iahuhuiahuia

Já tentou rodar o exemplo do link que passei? Vai um exemplo com InputVerifier (Praticamente igualzinho ao do javadoc) que verifica se apenas letras maiúsculas foram digitadas. Enquanto o texto não for válido, o foco fica preso no text field.

[code]import java.awt.;
import java.util.
;
import java.awt.event.;
import javax.swing.
;

public class VerifierTest extends JFrame {
public VerifierTest() {
JTextField tf1 = new JTextField (“Type only upper case letters here”);
getContentPane().add (tf1, BorderLayout.NORTH);
tf1.setInputVerifier(new PassVerifier());

   JTextField tf2 = new JTextField ("TextField2");
   getContentPane().add (tf2, BorderLayout.SOUTH);

   WindowListener l = new WindowAdapter() {
       public void windowClosing(WindowEvent e) { 
           System.exit(0); 
       }
   };
   addWindowListener(l);
 }

 class PassVerifier extends InputVerifier {
     public boolean verify(JComponent input) {
       JTextField tf = (JTextField) input;
       return tf.getText().matches("[A-Z]+"); // Verifica se o texto contém apenas letras maiúsculas.
     }
 }

 public static void main(String[] args) {
     Frame f = new VerifierTest();
   f.pack();
   f.setVisible(true);
 }

}[/code]
A verificação dos caracteres para validação deve ser implementada no método “verify”.

Se precisar que caracteres inválidos nem apareçam no text field, tem de implementar um Document. Daqui a pouco posto um exemplo simples.

Adaptei o exemplo anterior para utilizar Document.

[code]import java.awt.;
import java.awt.event.
;
import javax.swing.*;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class DocumentTest extends JFrame {
public DocumentTest() {
JTextField tf1 = new JTextField ();
getContentPane().add (tf1, BorderLayout.NORTH);
tf1.setDocument(new UpperCaseDocument());

   WindowListener l = new WindowAdapter() {
       public void windowClosing(WindowEvent e) { 
           System.exit(0); 
       }
   };
   addWindowListener(l);
 }

 class UpperCaseDocument extends PlainDocument {
     @Override
    public void insertString(int offs, String str, AttributeSet a)
    		throws BadLocationException {
    	 String allowed = str.replaceAll("[^A-Z]", ""); // Apaga todos os caracteres que não sejam letras maiúsculas.
    	super.insertString(offs, allowed, a);
    }
 }

 public static void main(String[] args) {
     Frame f = new DocumentTest();
   f.pack();
   f.setVisible(true);
 }

}[/code]
Este exemplo nem insere no text field os caracteres que não sejam letras maiúsculas.

Agora tem de melhorar e adaptar os exemplos para validar os dados conforme sua necessidade.

Tente implementar alguma coisa e conforme surgirem dúvidas, vá postando.

Usa regex.