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.
