Alguem poderia me ajudar com erro do botão editar

estou com um erro no botao Editar pelo que parece que ele esta tendo conflito com o Id

SEGUE O ERRO

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:592)
	at java.lang.Integer.parseInt(Integer.java:615)
	at View.TelaCadastroCliente.btnEditarActionPerformed(TelaCadastroCliente.java:1231)
	at View.TelaCadastroCliente.access$500(TelaCadastroCliente.java:36)
	at View.TelaCadastroCliente$6.actionPerformed(TelaCadastroCliente.java:446)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:262)
	at java.awt.Component.processMouseEvent(Component.java:6539)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
	at java.awt.Component.processEvent(Component.java:6304)
	at java.awt.Container.processEvent(Container.java:2239)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
	at java.awt.Container.dispatchEventImpl(Container.java:2283)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
	at java.awt.EventQueue$4.run(EventQueue.java:733)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

segue o método do botao editar

public void alterarCliente(Clientes clientes) {
        try {
            //1oasso - criar comando sql
            String sql = "update clientes set  nome=?, cpf=?, rg=?, nascimento=?, cep=?, endereco=?,uf=?, bairro=?, cidade=?, telefone=?, celular=?, email=?, observacao=? where id=?";
            //2passo - Organizar o sql e executalo
            PreparedStatement pstm = conecta.prepareStatement(sql);

            pstm.setString(1, clientes.getNome());
            pstm.setString(2, clientes.getCpf());
            pstm.setString(3, clientes.getRg());
            pstm.setString(4, clientes.getNascimento());
            pstm.setString(5, clientes.getCep());
            pstm.setString(6, clientes.getEndereco());
            pstm.setString(7, clientes.getUf());
            pstm.setString(8, clientes.getBairro());
            pstm.setString(9, clientes.getCidade());
            pstm.setString(10, clientes.getTelefone());
            pstm.setString(11, clientes.getCelular());
            pstm.setString(12, clientes.getEmail());
            pstm.setString(13, clientes.getObservacao());
            pstm.setInt(14, clientes.getId());
            //3passo - Execute o comando
            pstm.execute();

            //4passo - fechar o conexao 
            pstm.close();

        } catch (SQLException erro) {
            throw new RuntimeException(erro);
        }

    }

e a função do botao editar

    Clientes clientes = new Clientes();
    Date data = new Date();
    SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
    String nascimento = formatador.format(data);

    clientes.setId(Integer.parseInt(txtId.getText()));
    clientes.setNome(txtNome.getText());
    clientes.setCpf(txtCpf.getText());
    clientes.setRg(txtRg.getText());
    clientes.setNascimento(txtNascimento.getText());
    clientes.setCep(txtCep.getText());
    clientes.setEndereco(txtEndereco.getText());
    clientes.setUf(jComboBoxUf.getSelectedItem().toString());
    clientes.setBairro(txtBairro.getText());
    clientes.setCidade(txtCidade.getText());
    clientes.setTelefone(txtTelefone.getText());
    clientes.setCelular(txtCelular.getText());
    clientes.setEmail(txtEmail.getText());
    clientes.setObservacao(txtObservacao.getText());
  
    //2passo - Criar um objeto do tipo ClienteDao
    try {

        ClientesDao clientesdao = new ClientesDao();
        clientesdao.alterarCliente(clientes);
        JOptionPane.showMessageDialog(null, "Dados alterados com sucesso!");

    } catch (Exception e) {
        e.printStackTrace();
        JOptionPane.showMessageDialog(null, "Erro ao alterar");
    }
}

Erro: String vazia não pode virar número.

Linha do problema →

Provavelmente esse cara:

então ela da direta no código
clientes.setId(Integer.parseInt(txtId.getText()));

esse codigo pega o id do cliente cadastrado para poder editar e no formulario mostra o id certinho e do banco de dados tambem os dois bate
e se eu tirar esse codigo ele aparece a mensagem alterado com sucesso , porem não edita

O Rodrigo lhe respondeu. O erro acontece porque você está tentando converter para número um campo que está vazio.

então mais é como eu disse esse txtId é o campo Id que esta ai na foto e ele esta com numero não esta vazio e ele estava funcionando normalmente e parou , tenho outras abas vou tentar criar o editar na outras pra ver se da certo

Em algum momento vc tá zerando o campo do id. Só pode zerar depois que salvar

1 curtida