1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Validar campos JTextField

Gostaria de saber o que estou fazendo de errado tenho duas classe uma o visual e outra para a validação se que ao digitar um valor abaixo do minimo irá ficar cinza e ao passar o mouse sobre o campo dirá mostrar uma mensagem de alerta.

segue as classes abaixo :


import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;

public class Autocorecao extends JFrame {

    private JPanel contentPane;
    private JTextField textField;
    private JTextField textField_1;
    private JTextField textField_2;
    private JTextField textField_3;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Autocorecao frame = new Autocorecao();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });}

        public Autocorecao() {

            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            setBounds(100, 100, 276, 261);
            contentPane = new JPanel();
            contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
            setContentPane(contentPane);
            contentPane.setLayout(null);

            textField = new JTextField();
            textField.setBounds(10, 23, 191, 20);
            contentPane.add(textField);
            textField.setColumns(10);
            Tamanho_campo t = new Tamanho_campo();
            t.TratarJtextField(2,12,textField);

            textField_1 = new JTextField();
            textField_1.setColumns(10);
            textField_1.setBounds(10, 69, 191, 20);
            contentPane.add(textField_1);
            t.TratarJtextField(3,6,textField_1);

            textField_2 = new JTextField();
            textField_2.setColumns(10);
            textField_2.setBounds(10, 110, 191, 20);
            contentPane.add(textField_2);
            t.TratarJtextField(5,10,textField_2);


            textField_3 = new JTextField();
            textField_3.setColumns(10);
            textField_3.setBounds(10, 155, 191, 20);
            contentPane.add(textField_3);
            t.TratarJtextField(4,8,textField_3);

            JLabel lblNewLabel = new JLabel("min 2 max 12");
            lblNewLabel.setBounds(10, 11, 191, 14);
            contentPane.add(lblNewLabel);

            JLabel lblMinMax = new JLabel("min 3 max 6");
            lblMinMax.setBounds(10, 54, 191, 14);
            contentPane.add(lblMinMax);

            JLabel lblMinMax_1 = new JLabel("min 5 max 10");
            lblMinMax_1.setBounds(10, 96, 191, 14);
            contentPane.add(lblMinMax_1);

            JLabel lblMinMax_2 = new JLabel("min 4 max 8");
            lblMinMax_2.setBounds(10, 141, 191, 14);
            contentPane.add(lblMinMax_2);


    }
}

Validação

package lucas.funcao;

import java.awt.Color;

import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.PlainDocument;

import softmoby.com.br.Teste.DocumentSizeFilter;

public class Tamanho_campo  extends PlainDocument {

    public static JTextField textArea;
    public static DefaultStyledDocument doc;
    public static int maximo1=0;
    public static int minimo1=0;
    public static JTextField t;
    public static String t_conteudo;

    public void TratarJtextField(int minimo,int maximo,JTextField textArea) {  
        t= textArea;
        maximo1 =maximo;
        minimo1=minimo; 
        doc = new DefaultStyledDocument();
        doc.setDocumentFilter(new DocumentSizeFilter(maximo));


        doc.addDocumentListener(new DocumentListener() {

            @Override
            public void changedUpdate(DocumentEvent e) {
                updateCount();
            }

            @Override
            public void insertUpdate(DocumentEvent e) {
                updateCount();
            }

            @Override
            public void removeUpdate(DocumentEvent e) {
                updateCount();
            }
        });

        textArea.setDocument(doc);
        updateCount();
    }


    private static void updateCount() {

        int quan =0;
        try {
            quan = doc.getLength();
        } catch (Exception e) {

        }

        if(minimo1>quan){
            t.setBackground(Color.LIGHT_GRAY);
            String q = Integer.toString(quan-minimo1).replaceAll("\\D", "");
            t.setToolTipText("Precisa mais "+q+" caracter");
        }

        if(minimo1<=quan){

            String q = Integer.toString(maximo1-quan).replaceAll("\\D", "");
            t.setToolTipText("Restam "+q+" caracter");
            t.setBackground(Color.WHITE);
        }

    }

}

Gostaria de saber por que nos três primeiro não validam e somente o ultimo alguém sabe como resolver isso

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java ou faça a sua própria pergunta.