Erro ao verificar JTextField

3 respostas
Otavio_do_Nascimento

Boa tarde pessoal, meu problema é o seguinte:

Eu estou fazendo um cadastro simples e armazenando em um banco de dados, e estou fazendo a validação dos campos para não serem vazios no java desta forma:

private void txtmesFocusLost(java.awt.event.FocusEvent evt) {
        if(!txtdia.getText().equals("")&& txtmes.getText().equals(""))
            JOptionPane.showMessageDialog(null,"O campo mes deve ser preenchido!");
    }

    private void txtnumeroFocusGained(java.awt.event.FocusEvent evt) {
        if(txtmes.getText().equals(""))
              txtmes.requestFocus();
    }

Isso eu faço com todos os meus campos, primeiro dando a mensagem que precisa preencher e depois setando o foco para o componente para ser digitado.
Alguns campos como o txtmes estou convertento para int no botão cadastrar, mas ele só me retorna erro no campo txtmes, o erro é o seguinte:

Exception occurred during event dispatching:

java.lang.NumberFormatException: For input string: “”

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)

at java.lang.Integer.parseInt(Integer.java:468)

at java.lang.Integer.parseInt(Integer.java:497)

at FormFesta.txtnumeroFocusLost(FormFesta.java:319)

at FormFesta.access$900(FormFesta.java:6)

at FormFesta$6.focusLost(FormFesta.java:245)

at java.awt.AWTEventMulticaster.focusLost(AWTEventMulticaster.java:213)

at java.awt.Component.processFocusEvent(Component.java:6108)

at java.awt.Component.processEvent(Component.java:5972)

at java.awt.Container.processEvent(Container.java:2041)

at java.awt.Component.dispatchEventImpl(Component.java:4583)

at java.awt.Container.dispatchEventImpl(Container.java:2099)

at java.awt.Component.dispatchEvent(Component.java:4413)

at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848)

at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:889)

at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:562)

at java.awt.Component.dispatchEventImpl(Component.java:4455)

at java.awt.Container.dispatchEventImpl(Container.java:2099)

at java.awt.Component.dispatchEvent(Component.java:4413)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.SentEvent.dispatch(SentEvent.java:55)

at java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent.dispatch(DefaultKeyboardFocusManager.java:183)

at java.awt.DefaultKeyboardFocusManager.sendMessage(DefaultKeyboardFocusManager.java:210)

at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:627)

at java.awt.Component.dispatchEventImpl(Component.java:4455)

at java.awt.Container.dispatchEventImpl(Container.java:2099)

at java.awt.Window.dispatchEventImpl(Window.java:2475)

at java.awt.Component.dispatchEvent(Component.java:4413)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.SequencedEvent.dispatch(SequencedEvent.java:101)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)

at java.awt.Dialog$1.run(Dialog.java:1051)

at java.awt.Dialog$3.run(Dialog.java:1103)

at java.security.AccessController.doPrivileged(Native Method)

at java.awt.Dialog.show(Dialog.java:1101)

at javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:853)

at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:650)

at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:621)

at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:592)

at FormFesta.txtmesFocusLost(FormFesta.java:386)

at FormFesta.access$600(FormFesta.java:6)

at FormFesta$4.focusLost(FormFesta.java:229)

at java.awt.AWTEventMulticaster.focusLost(AWTEventMulticaster.java:213)

at java.awt.Component.processFocusEvent(Component.java:6108)

at java.awt.Component.processEvent(Component.java:5972)

at java.awt.Container.processEvent(Container.java:2041)

at java.awt.Component.dispatchEventImpl(Component.java:4583)

at java.awt.Container.dispatchEventImpl(Container.java:2099)

at java.awt.Component.dispatchEvent(Component.java:4413)

at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848)

at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:889)

at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:562)

at java.awt.Component.dispatchEventImpl(Component.java:4455)

at java.awt.Container.dispatchEventImpl(Container.java:2099)

at java.awt.Component.dispatchEvent(Component.java:4413)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

O que será que pode estar dando erro, uma vez que eu tenho outros campos que converto para int e ele valida normalmente?

3 Respostas

N

Otavio, “em algum momento” do seu código você esta tentando converter um “caracter” para int, tente “debugar” e observe o valor da variavel na hora do parse.

DAPEDRA

Otavio do Nascimento:
Boa tarde pessoal, meu problema é o seguinte:

Eu estou fazendo um cadastro simples e armazenando em um banco de dados, e estou fazendo a validação dos campos para não serem vazios no java desta forma:

private void txtmesFocusLost(java.awt.event.FocusEvent evt) {
        if(!txtdia.getText().equals("")&& txtmes.getText().equals(""))
            JOptionPane.showMessageDialog(null,"O campo mes deve ser preenchido!");
    }

    private void txtnumeroFocusGained(java.awt.event.FocusEvent evt) {
        if(txtmes.getText().equals(0))
              txtmes.requestFocus();
    }

Isso eu faço com todos os meus campos, primeiro dando a mensagem que precisa preencher e depois setando o foco para o componente para ser digitado.
Alguns campos como o txtmes estou convertento para int no botão cadastrar, mas ele só me retorna erro no campo txtmes, o erro é o seguinte:

Exception occurred during event dispatching:

java.lang.NumberFormatException: For input string: “”

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)

at java.lang.Integer.parseInt(Integer.java:468)

at java.lang.Integer.parseInt(Integer.java:497)

at FormFesta.txtnumeroFocusLost(FormFesta.java:319)

at FormFesta.access$900(FormFesta.java:6)

at FormFesta$6.focusLost(FormFesta.java:245)

at java.awt.AWTEventMulticaster.focusLost(AWTEventMulticaster.java:213)

at java.awt.Component.processFocusEvent(Component.java:6108)

at java.awt.Component.processEvent(Component.java:5972)

at java.awt.Container.processEvent(Container.java:2041)

at java.awt.Component.dispatchEventImpl(Component.java:4583)

at java.awt.Container.dispatchEventImpl(Container.java:2099)

at java.awt.Component.dispatchEvent(Component.java:4413)

at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848)

at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:889)

at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:562)

at java.awt.Component.dispatchEventImpl(Component.java:4455)

at java.awt.Container.dispatchEventImpl(Container.java:2099)

at java.awt.Component.dispatchEvent(Component.java:4413)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.SentEvent.dispatch(SentEvent.java:55)

at java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent.dispatch(DefaultKeyboardFocusManager.java:183)

at java.awt.DefaultKeyboardFocusManager.sendMessage(DefaultKeyboardFocusManager.java:210)

at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:627)

at java.awt.Component.dispatchEventImpl(Component.java:4455)

at java.awt.Container.dispatchEventImpl(Container.java:2099)

at java.awt.Window.dispatchEventImpl(Window.java:2475)

at java.awt.Component.dispatchEvent(Component.java:4413)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.SequencedEvent.dispatch(SequencedEvent.java:101)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)

at java.awt.Dialog$1.run(Dialog.java:1051)

at java.awt.Dialog$3.run(Dialog.java:1103)

at java.security.AccessController.doPrivileged(Native Method)

at java.awt.Dialog.show(Dialog.java:1101)

at javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:853)

at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:650)

at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:621)

at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:592)

at FormFesta.txtmesFocusLost(FormFesta.java:386)

at FormFesta.access$600(FormFesta.java:6)

at FormFesta$4.focusLost(FormFesta.java:229)

at java.awt.AWTEventMulticaster.focusLost(AWTEventMulticaster.java:213)

at java.awt.Component.processFocusEvent(Component.java:6108)

at java.awt.Component.processEvent(Component.java:5972)

at java.awt.Container.processEvent(Container.java:2041)

at java.awt.Component.dispatchEventImpl(Component.java:4583)

at java.awt.Container.dispatchEventImpl(Container.java:2099)

at java.awt.Component.dispatchEvent(Component.java:4413)

at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848)

at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:889)

at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:562)

at java.awt.Component.dispatchEventImpl(Component.java:4455)

at java.awt.Container.dispatchEventImpl(Container.java:2099)

at java.awt.Component.dispatchEvent(Component.java:4413)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

O que será que pode estar dando erro, uma vez que eu tenho outros campos que converto para int e ele valida normalmente?

gilberto_oliveira

Na própria mensagem de erro já tá dizendo - na hora da conversão o campo está com “” (uma string vazia) por isso ele não consegue tranformar em int.

Nestes casos eu prefiro usar um jformattedtextfield, e uso o getValue. coloco também uma máscara para evitar valores “estranhos” e atribuo o value pra zero já na inicialização. Assim não dá erro.

Criado 14 de junho de 2009
Ultima resposta 14 de jun. de 2009
Respostas 3
Participantes 4