Aguardar entrada de texto

5 respostas
N

Olá, pessoal!

Tenho mais uma dúvida. Quero fazer um tratamento de erro simples (sem ter de trabalhar com exceptions).

Tenho um campo de data que é obrigatório. Quando o usuário clicar no “executar”, o programa verifica se o campo foi preenchido. Em caso negativo, exibe uma mensagem de erro.

O problema é que mesmo mostrando a mensagem de erro, quando se clica no “OK”, a execução continua. Como fazer para que ao clicar no “OK”, o programa retorne à tela inicial, focando o campo a ser preenchido?

if (dtinicial.getText().equals("__/__/____"))
{
     JOptionPane.showMessageDialog(null, "Falta digitar a data inicial!","Falta preencher campos", JOptionPane.ERROR_MESSAGE);
//O que eu coloco aqui para voltar e não seguir adiante com a  execução do programa?                                    
}

5 Respostas

cassio

Isso depende de como está implementado o fluxo do seu programa… Vc pode usar um System.exit() para sair do programa, um return para retornar deste método, se for o método de evneto de um botão, por exemplo), pode destruir o Frame atual e votlar para o anterior com algo como frameAtual.dispose(), etc…

N

Muito obrigado, Cássio, pela dica. Com o return deu certo. Mas e para focar o campo a ser preenchido, tem jeito?

cassio
campoASerPreenchido.requestFocus();
J

Um exemplo

package estudo;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class EntradaDeTexto extends JFrame implements ActionListener
{

    private static final long serialVersionUID = -1966674816613806227L;

    private JTextField fieldData;

    private JLabel labelData;

    private JButton buttonData;

    private JPanel panelData;

    public EntradaDeTexto()
    {
        super(" ------ Entrada de Texto ----");
        setVisible(true);
        setSize(200, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        labelData = new JLabel("Data");
        fieldData = new JTextField();
        buttonData = new JButton("OK!");
        panelData = new JPanel();

        panelData.setLayout(new BoxLayout(panelData, BoxLayout.Y_AXIS));

        panelData.add(labelData);
        panelData.add(fieldData);
        panelData.add(buttonData);

        buttonData.addActionListener(this);

        this.add(panelData);

    }

    public void actionPerformed(ActionEvent e)
    {
        Object obj = e.getSource();
        String str = fieldData.getText();

        if (obj.equals(buttonData))
        {
            if (str.equals(""))
            {

                Object[] op_ = { "Ok!" };
                int x = JOptionPane.showOptionDialog(null, "Falta digitar a data inicial!", "  .:  Falta preencher campos :.  ", JOptionPane.ERROR_MESSAGE, JOptionPane.ERROR_MESSAGE, null, op_, op_);
                if (x == 0)
                {
                    fieldData.requestFocus();

                }
            }
        }
    }

    /**
     * @param args
     */
    public static void main(String[] args)
    {
        new EntradaDeTexto();
    }

}
N

Pessoal,

Muitíssimo obrigado pelas dicas.

Funcionou direitinho.

Criado 20 de outubro de 2006
Ultima resposta 20 de out. de 2006
Respostas 5
Participantes 3