Posicionamento do ResultSet?

Boa tarde.

Tenho os seguintes métodos em minha aplicação Java Desktop

// 1. Executa a Consulta e monta o List a partir dos Beans
private List<Bean> consultarRegistros(){
        String sql = "SELECT * FROM SRDM ORDER BY ID DESC";
        solicitacoes = new ArrayList<>();
        try {
            pstm = conecta().prepareStatement(sql);
            rs = pstm.executeQuery(); 
            while(rs.next()){
                bean = new Bean();
                bean.setId(rs.getInt("id"));
                bean.setData(rs.getString("data"));
                bean.setEnfermaria(rs.getString("enfermaria"));
                bean.setMotivo(rs.getShort("motivo"));   
                solicitacoes.add(bean);
            }
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Não Existe Registro!");
            ex.printStackTrace();
        }finally{
            desconecta();
        }
        return solicitacoes;
    }

// 2. Monta os Dados na Tabela a partir do List
private void mostrarSolicitacoes(List<Bean> solicitacoes) {
        tbDados.getColumnModel().getColumn(0).setPreferredWidth(5); // mês/ano
        tbDados.getColumnModel().getColumn(1).setPreferredWidth(5); // enfermaria
        tbDados.getColumnModel().getColumn(2).setPreferredWidth(20); // motivo
        
        while (tmSRDM.getRowCount() > 0) {
            tmSRDM.removeRow(0);
        }
        
        if (solicitacoes.size() == 0) {
            //JOptionPane.showMessageDialog(this, "Nenhum Agendamento Encontrado!");
        } else {
        }

        for (int i = 0; i < solicitacoes.size(); i++) {
            String[] campos = new String[]{null, null, null};
            tmSRDM.addRow(campos);
            tmSRDM.setValueAt(solicitacoes.get(i).getData(), i, 0);
            tmSRDM.setValueAt(solicitacoes.get(i).getEnfermaria(), i, 1);
            tmSRDM.setValueAt(solicitacoes.get(i).getMotivo(), i, 2);
        }
    }

// 3. Mostra os Dados nos Campos a partir do List
private void tbDadosLinhaSelecionada(JTable tb){
            if (tb.getSelectedRow() != -1) {
               tfId.setText("" + solicitacoes.get(tb.getSelectedRow()).getId());
               tfData.setText(solicitacoes.get(tb.getSelectedRow()).getData());
                
               if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("TA")){
                   cbEnfermaria.setSelectedItem("TA - UDAP");
               }else if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("TB")){
                   cbEnfermaria.setSelectedItem("TB - UTI.2");
               }else if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("1A")){
                   cbEnfermaria.setSelectedItem("1A - ONCOHEMATO");
               }else if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("1B")){
                   cbEnfermaria.setSelectedItem("1B - ONCOHEMATO / TMO");
               }else if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("1C")){
                   cbEnfermaria.setSelectedItem("1C - UPL");
               }else if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("CS")){
                   cbEnfermaria.setSelectedItem("1CS - UTI.PED");
               }else if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("1D")){
                   cbEnfermaria.setSelectedItem("1D - CARDIO");
               }else if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("2A")){
                   cbEnfermaria.setSelectedItem("2A - CLINICA MÉDICA");
               }else if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("2B")){
                   cbEnfermaria.setSelectedItem("2B - INFECTO");
               }else if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("2C")){
                   cbEnfermaria.setSelectedItem("2C - OFTALMO");
               }else if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("2D")){
                   cbEnfermaria.setSelectedItem("2D - CLINICA MÉDICA");
               }else if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("3B")){
                   cbEnfermaria.setSelectedItem("3B - PSIQUIATRIA");
               }else if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("3C")){
                   cbEnfermaria.setSelectedItem("3B - NEURO");
               }else if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("3D")){
                   cbEnfermaria.setSelectedItem("3B - VAZIA");
               }else if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("4A")){
                   cbEnfermaria.setSelectedItem("4A - CLI. CIR. M");
               }else if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("4B")){
                   cbEnfermaria.setSelectedItem("4B - GASTRO-HEPATO");
               }else if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("4C")){
                   cbEnfermaria.setSelectedItem("4C - UTI.1");
               }else if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("4D")){
                   cbEnfermaria.setSelectedItem("4D - CLI. CIR. F");
               }else if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("UM")){
                   cbEnfermaria.setSelectedItem("UM - METABÓLLICA");
               }else if(solicitacoes.get(tb.getSelectedRow()).getEnfermaria().equals("XY")){
                   cbEnfermaria.setSelectedItem("XY - OUTRAS");
               }else{
                   cbEnfermaria.setSelectedItem("Selecione ...");
               }
               
                if(solicitacoes.get(tb.getSelectedRow()).getMotivo() == 1){
                    cbMotivo.setSelectedItem("1 - Ampola quebrou durante preparo");
                }else if(solicitacoes.get(tb.getSelectedRow()).getMotivo() == 2){
                    cbMotivo.setSelectedItem("2 - Caiu no chão");
                }else if(solicitacoes.get(tb.getSelectedRow()).getMotivo() == 3){
                    cbMotivo.setSelectedItem("3 - Desprezado");
                }else if(solicitacoes.get(tb.getSelectedRow()).getMotivo() == 4){
                    cbMotivo.setSelectedItem("4 - Erro no preparo (Reconstituição / Diluição)");
                }else if(solicitacoes.get(tb.getSelectedRow()).getMotivo() == 5){
                    cbMotivo.setSelectedItem("5 - Pcte rejeitou, cuspiu, vomitou");
                }else if(solicitacoes.get(tb.getSelectedRow()).getMotivo() == 6){
                    cbMotivo.setSelectedItem("6 - Não encontrado no box");
                }else if(solicitacoes.get(tb.getSelectedRow()).getMotivo() == 7){
                    cbMotivo.setSelectedItem("7 - Sem justificativa");
                }else if(solicitacoes.get(tb.getSelectedRow()).getMotivo() == 8){
                    cbMotivo.setSelectedItem("8 - Outros");
                }else{
                    cbMotivo.setSelectedItem("Selecione ...");
                } 
            }       
        }

Meu problema é o seguinte: Quando clico na linha correspondente ao primeiro registro da tabela (ou seja a primeira linha de baixo pra cima, pois os dados estão em ordem decrescente, mostra os dados do registro normalmente, porém se eu clicar em qualquer outro registro ou percorrer os dados da tabela e voltar para o primeiro registro novamente, já não atualiza mais os comboBox de Enfermaria e Motivo, porém todos os demais dados dos demais registros são mostrados normalmente. Alguém sabe dizer qual pode ser o meu problema?
Agradecido.

Ninguém pra me dar uma luz???
Mais uma coisa, quando clico no botão limpar, o mesmo chama o método abaixo:

// Método Chamado ao clicar no botão Limpar
private void limparCampos(){
        
	tbDados.getSelectionModel().clearSelection();
        
	tfId.setText("");
        
	tfData.setText("");
        
	cbEnfermaria.setSelectedItem("Selecione ...");
        
	cbMotivo.setSelectedItem("Selecione ...");
}

Após limpar todos os campos, e voltar a selecionar o primeiro registro da tabela, volta a mostrar normalmente os dados referente ao primeiro registro e depois de mudar de linha, volta a apresentar o mesmo problema, só atualiza os campos ID e DATA, os jComboBox não atualizam.

Manda uma print da janela.

Segue as telas do sistema mostrando o erro no terceiro clique, quando retorno ao primeiro registro.

Manda o código do listener onde vc chama o método tbDadosLinhaSelecionada()

Está aí o Código!

DefaultTableModel tmSRDM = new DefaultTableModel(null, new String[]{"Mês / Ano", "Enfermaria", "Motivo"}) {
        public boolean isCellEditable(int row, int col) {
            return false;
        }
    };

ListSelectionModel lsmSRDM;

tbDados.setModel(tmSRDM);
tbDados.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  
  
lsmSRDM = tbDados.getSelectionModel();  
  
lsmSRDM.addListSelectionListener(new ListSelectionListener() {          
      
	public void valueChanged(ListSelectionEvent e){          
          
		if(!e.getValueIsAdjusting()){          
              
			tbDadosLinhaSelecionada(tbDados);  
          
		}  
      
	}  
  
});

Tem mais alguma parte do código que mexe com os combobox?
Declaração deles, etc

O código completo está no GIT-HUB. Pode dar uma olhada lá. Eu só capturo o que está selecionado no ComboBox para Salvar ou Comparo o que está no Banco de Dados com a Descrição no ComboBox para setar corretamente os valores.

Comente essa linha e teste o programa. Pra ver se o listener do combobox tá causando esse bug.

Mas eu preciso desse evento no jComboBox para pegar o conteúdo selecionado e transformar no valor que salvo no BD conforme código abaixo:

private void cbEnfermariaActionPerformed(java.awt.event.ActionEvent evt) {
    
    if(cbEnfermaria.getSelectedItem().equals("TA - UDAP")){
        bean.setEnfermaria("TA");
        enfermaria = "TA";
        novaEnfermaria = "TA";
    }else if(cbEnfermaria.getSelectedItem().equals("TB - UTI.2")){
        bean.setEnfermaria("TB");
        enfermaria = "TB";
        novaEnfermaria = "TB";
    }else if(cbEnfermaria.getSelectedItem().equals("1A - ONCOHEMATO")){
        bean.setEnfermaria("1A");
        enfermaria = "1A";
        novaEnfermaria = "1A";
    }else if(cbEnfermaria.getSelectedItem().equals("1B - ONCOHEMATO / TMO")){
        bean.setEnfermaria("1B");
        enfermaria = "1B";
        novaEnfermaria = "1B";
    }else if(cbEnfermaria.getSelectedItem().equals("1C - UPL")){
        bean.setEnfermaria("1C");
        enfermaria = "1C";
        novaEnfermaria = "1C";
    }else if(cbEnfermaria.getSelectedItem().equals("1CS - UTI.PED")){
        bean.setEnfermaria("CS");
        enfermaria = "CS";
        novaEnfermaria = "CS";
    }else if(cbEnfermaria.getSelectedItem().equals("1D - CARDIO")){
        bean.setEnfermaria("1D");
        enfermaria = "1D";
        novaEnfermaria = "1D";
    }else if(cbEnfermaria.getSelectedItem().equals("2A - CLINICA MÉDICA")){
        bean.setEnfermaria("2A");
        enfermaria = "2A";
        novaEnfermaria = "2A";
    }else if(cbEnfermaria.getSelectedItem().equals("2B - INFECTO")){
        bean.setEnfermaria("2B");
        enfermaria = "2B";
        novaEnfermaria = "2B";
    }else if(cbEnfermaria.getSelectedItem().equals("2C - OFTALMO")){
        bean.setEnfermaria("2C");
        enfermaria = "2C";
        novaEnfermaria = "2C";
    }else if(cbEnfermaria.getSelectedItem().equals("2D - CLINICA MÉDICA")){
        bean.setEnfermaria("2D");
        enfermaria = "2D";
        novaEnfermaria = "2D";
    }else if(cbEnfermaria.getSelectedItem().equals("3B - PSIQUIATRIA")){
        bean.setEnfermaria("3B");
        enfermaria = "3B";
        novaEnfermaria = "3B";
    }else if(cbEnfermaria.getSelectedItem().equals("3C - NEURO")){
        bean.setEnfermaria("3C");
        enfermaria = "3C";
        novaEnfermaria = "3C";
    }else if(cbEnfermaria.getSelectedItem().equals("3D - VAZIA")){
        bean.setEnfermaria("3D");
        enfermaria = "3D";
        novaEnfermaria = "3D";
    }else if(cbEnfermaria.getSelectedItem().equals("4A - CLI. CIR. M")){
        bean.setEnfermaria("4A");
        enfermaria = "4A";
        novaEnfermaria = "4A";
    }else if(cbEnfermaria.getSelectedItem().equals("4B - GASTRO-HEPATO")){
        bean.setEnfermaria("4B");
        enfermaria = "4B";
        novaEnfermaria = "4B";
    }else if(cbEnfermaria.getSelectedItem().equals("4C - UTI.1")){
        bean.setEnfermaria("4C");
        enfermaria = "4C";
        novaEnfermaria = "4C";
    }else if(cbEnfermaria.getSelectedItem().equals("4D - CLI. CIR. F")){
        bean.setEnfermaria("4D");
        enfermaria = "4D";
        novaEnfermaria = "4D";
    }else if(cbEnfermaria.getSelectedItem().equals("UM - METABÓLICA")){
        bean.setEnfermaria("UM");
        enfermaria = "UM";
        novaEnfermaria = "UM";
    }else if(cbEnfermaria.getSelectedItem().equals("XY - OUTRAS")){
        bean.setEnfermaria("XY");
        enfermaria = "XY";
        novaEnfermaria = "XY";
    }else{
        bean.setEnfermaria(""); // cbEnfermaria.getSelectedItem().equals("Selecione ...");
        enfermaria = "";
        novaEnfermaria = "";
    }
}

private void cbMotivoActionPerformed(java.awt.event.ActionEvent evt) {
    
    if(cbMotivo.getSelectedItem().equals("1 - Ampola quebrou durante preparo")){
        bean.setMotivo(Short.valueOf("1"));
        motivo = Short.valueOf("1");
        novoMotivo = Short.valueOf("1");
    }else if(cbMotivo.getSelectedItem().equals("2 - Caiu no chão")){
        bean.setMotivo(Short.valueOf("2"));
        motivo = Short.valueOf("2");
        novoMotivo = Short.valueOf("2");
    }else if(cbMotivo.getSelectedItem().equals("3 - Desprezado")){
        bean.setMotivo(Short.valueOf("3"));
        motivo = Short.valueOf("3");
        novoMotivo = Short.valueOf("3");
    }else if(cbMotivo.getSelectedItem().equals("4 - Erro no preparo (Reconstituição / Diluição)")){
        bean.setMotivo(Short.valueOf("4"));
        motivo = Short.valueOf("4");
        novoMotivo = Short.valueOf("4");
    }else if(cbMotivo.getSelectedItem().equals("5 - Pcte rejeitou, cuspiu, vomitou")){
        bean.setMotivo(Short.valueOf("5"));
        motivo = Short.valueOf("5");
        novoMotivo = Short.valueOf("5");
    }else if(cbMotivo.getSelectedItem().equals("6 - Não encontrado no box")){
        bean.setMotivo(Short.valueOf("6"));
        motivo = Short.valueOf("6");
        novoMotivo = Short.valueOf("6");
    }else if(cbMotivo.getSelectedItem().equals("7 - Sem justificativa")){
        bean.setMotivo(Short.valueOf("7"));
        motivo = Short.valueOf("7");
        novoMotivo = Short.valueOf("7");
    }else if(cbMotivo.getSelectedItem().equals("8 - Outros")){
        bean.setMotivo(Short.valueOf("8"));
        motivo = Short.valueOf("8");
        novoMotivo = Short.valueOf("8");
    }else{
        bean.setMotivo(Short.valueOf("0")); // cbMotivo.getSelectedItem().equals("Selecione ...")
        motivo = Short.valueOf("0");
        novoMotivo = Short.valueOf("0");
    }

Ah, sim.
É só para testar mesmo. Pra tentar descobrir a causa.