Caixa - JOptionPane.showMessageDialog - Não fecha

11 respostas
java
F
Amigos, boa noite, tudo bls com todos ??

Estou tendo um probleminha que não consigo achar na internet e de repente vcs pode me ajudar ;
  • Tenho um JOptionPane.showMessageDialog que aparece na tela normalmente, mas quando clico em ok para fecha-la, esta não esta fechando, o que pode ser ??? Seá que terei que força-la a fechar ??? Mas como ???

    • Ficarei muito grato pela ajuda, vlw e fiquem com Deus.

      switch (tomAtual + tomNovo) {     
                       case "AB":     //1 tom
                                      if (nota == 'A') { 
                                          if (sus== '#' ){
                                              sb.append("C"); 
                                          }else{ 
                                              sb.append("B");  
                                         } 
                                         //B    
                                        }else if (nota == 'B') {        
                               if (sus== '#'  ) {
                                                  sb.append("D"); 
                                           }else{ 
                                                  sb.append("C#");  
                                            } 
                                 //C
                                            } else if (nota == 'C') {
                                     if (sus== '#') {
                                                    sb.append("D#"); 
                                                }else{ 
                                                    sb.append("D");  
                                                        } 
                                                    //D
                                              .
                                                          .
                                                          .
                                                break;
                                                default:
                                              JOptionPane.showMessageDialog(null, "Novo tom, so aceita A e C");
      

Armando.

11 Respostas

Jothar_Aleksander

Poste o código onde está switch por inteiro.

F

O código é muito grande, inclusive quero modifica-lo quando tiver noções de Programação Orientado a Objeto. mas como vc pediu, ai vai;

switch (tomAtual + tomNovo) {     
	         case "AB":     //1 tom
                                                      //A
	                   if (nota == 'A') { 
                                                          if (sus== '#' ){
                                                              sb.append("C"); 
                                                          }else{ 
                                                             sb.append("B");  
                                                          } 
                                                      //B    
                                                      }    else if (nota == 'B') {        
		         if (sus== '#'  ) {
                                                              sb.append("D"); 
                                                          }else{ 
                                                             sb.append("C#");  
                                                          } 
		//C
                                                      } else if (nota == 'C') {
		      if (sus== '#') {
                                                              sb.append("D#"); 
                                                          }else{ 
                                                             sb.append("D");  
                                                          } 
                                                      //D
		} else if (nota == 'D') {
		      if (sus== '#' ) {
                                                              sb.append("F"); 
                                                          }else{ 
                                                             sb.append("E");  
                                                          } 
                                                      //E
		} else if (nota == 'E') {
		       if (sus== '#' ) {
                                                              sb.append("G"); 
                                                          }else{ 
                                                             sb.append("F#");  
                                                          } 
                                                      //F
		} else if (nota == 'F') {
		      if (sus== '#') {
                                                                 sb.append("G#"); 
                                                          }else{ 
                                                                sb.append("G");  
                                                          } 
                                                      //G
		} else if (nota == 'G') {
		      if (sus== '#') {
                                                                sb.append("A#"); 
                                                             }else{ 
                                                                sb.append("A");  
                                                             } 
                                                  }else if (nota !='#' ){
                                                          sb.append(nota);       //caso seja espaço em branco ou outro qualquer
                                                      }
                                                      break;
                         
                                         case "AC" :     //1 1/2 tom
                                                  //A  
	                   if (nota == 'A') { 
                                                          if (sus== '#' ){
                                                              sb.append("C#"); 
                                                          }else{ 
                                                             sb.append("C");  
                                                          } 
                                                      //B    
                                                      }    else if (nota == 'B') {        
		         if (sus== '#'  ) {
                                                              sb.append("D#"); 
                                                          }else{ 
                                                             sb.append("D");  
                                                          } 
		//C
                                                      } else if (nota == 'C') {
		      if (sus== '#') {
                                                              sb.append("E"); 
                                                          }else{ 
                                                             sb.append("D#");  
                                                          } 
                                                      //D
		} else if (nota == 'D') {
		      if (sus== '#' ) {
                                                              sb.append("F#"); 
                                                          }else{ 
                                                             sb.append("F");  
                                                          } 
                                                      //E
		} else if (nota == 'E') {
		       if (sus== '#' ) {
                                                              sb.append("G#"); 
                                                          }else{ 
                                                             sb.append("G");  
                                                          } 
                                                      //F
		} else if (nota == 'F') {
		      if (sus== '#') {
                                                                 sb.append("A"); 
                                                          }else{ 
                                                                sb.append("G#");  
                                                          } 
                                                      //G
		} else if (nota == 'G') {
		      if (sus== '#') {
                                                                sb.append("B"); 
                                                             }else{ 
                                                                sb.append("A#");  
                                                             } 
                                                  }else if (nota !='#' ){
                                                          sb.append(nota);       //caso seja espaço em branco ou outro qualquer
                                                      }
                                                      break;
                                        
                                         case "AD" :     //2 1/2 tom
                                                  //A  
	                   if (nota == 'A') { 
                                                          if (sus== '#' ){
                                                              sb.append("D#"); 
                                                          }else{ 
                                                             sb.append("D");  
                                                          } 
                                                      //B    
                                                      }    else if (nota == 'B') {        
		         if (sus== '#'  ) {
                                                              sb.append("F"); 
                                                          }else{ 
                                                             sb.append("E");  
                                                          } 
		//C
                                                      } else if (nota == 'C') {
		      if (sus== '#') {
                                                              sb.append("F#"); 
                                                          }else{ 
                                                             sb.append("F");  
                                                          } 
                                                      //D
		} else if (nota == 'D') {
		      if (sus== '#' ) {
                                                              sb.append("G#"); 
                                                          }else{ 
                                                             sb.append("G");  
                                                          } 
                                                      //E
		} else if (nota == 'E') {
		       if (sus== '#' ) {
                                                              sb.append("A#"); 
                                                          }else{ 
                                                             sb.append("A");  
                                                          } 
                                                      //F
		} else if (nota == 'F') {
		      if (sus== '#') {
                                                                 sb.append("B"); 
                                                          }else{ 
                                                                sb.append("A#");  
                                                          } 
                                                      //G
		} else if (nota == 'G') {
		      if (sus== '#') {
                                                                sb.append("C#"); 
                                                             }else{ 
                                                                sb.append("C");  
                                                             } 
                                                  }else if (nota !='#' ){
                                                          sb.append(nota);       //caso seja espaço em branco ou outro qualquer
                                                      }
                                                      break;
                                                 	
                                          case "AE" :     //3 1/2 tom
                                                  //A  
	                   if (nota == 'A') { 
                                                          if (sus== '#' ){
                                                              sb.append("F"); 
                                                          }else{ 
                                                             sb.append("E");  
                                                          } 
                                                      //B    
                                                      }    else if (nota == 'B') {        
		         if (sus== '#'  ) {
                                                              sb.append("G"); 
                                                          }else{ 
                                                             sb.append("F#");  
                                                          } 
		//C
                                                      } else if (nota == 'C') {
		      if (sus== '#') {
                                                              sb.append("G#"); 
                                                          }else{ 
                                                             sb.append("G");  
                                                          } 
                                                      //D
		} else if (nota == 'D') {
		      if (sus== '#' ) {
                                                              sb.append("A#"); 
                                                          }else{ 
                                                             sb.append("A");  
                                                          } 
                                                      //E
		} else if (nota == 'E') {
		       if (sus== '#' ) {
                                                              sb.append("C"); 
                                                          }else{ 
                                                             sb.append("B");  
                                                          } 
                                                      //F
		} else if (nota == 'F') {
		      if (sus== '#') {
                                                                 sb.append("C#"); 
                                                          }else{ 
                                                                sb.append("C");  
                                                          } 
                                                      //G
		} else if (nota == 'G') {
		      if (sus== '#') {
                                                                sb.append("D#"); 
                                                             }else{ 
                                                                sb.append("D");  
                                                             } 
                                                  }else if (nota !='#' ){
                                                          sb.append(nota);       //caso seja espaço em branco ou outro qualquer
                                                      }
                                                      break;     
                                         case "AF" :     //3 1/2 tom
                                                  //A  
	                   if (nota == 'A') { 
                                                          if (sus== '#' ){
                                                              sb.append("F#"); 
                                                          }else{ 
                                                             sb.append("F");  
                                                          } 
                                                      //B    
                                                      }    else if (nota == 'B') {        
		         if (sus== '#'  ) {
                                                              sb.append("G#"); 
                                                          }else{ 
                                                             sb.append("G");  
                                                          } 
		//C
                                                      } else if (nota == 'C') {
		      if (sus== '#') {
                                                              sb.append("A"); 
                                                          }else{ 
                                                             sb.append("G#");  
                                                          } 
                                                      //D
		} else if (nota == 'D') {
		      if (sus== '#' ) {
                                                              sb.append("B"); 
                                                          }else{ 
                                                             sb.append("A#");  
                                                          } 
                                                      //E
		} else if (nota == 'E') {
		       if (sus== '#' ) {
                                                              sb.append("C#"); 
                                                          }else{ 
                                                             sb.append("C");  
                                                          } 
                                                      //F
		} else if (nota == 'F') {
		      if (sus== '#') {
                                                                 sb.append("D"); 
                                                          }else{ 
                                                                sb.append("C#");  
                                                          } 
                                                      //G
		} else if (nota == 'G') {
		      if (sus== '#') {
                                                                sb.append("E"); 
                                                             }else{ 
                                                                sb.append("D#");  
                                                             } 
                                                  }else if (nota !='#' ){
                                                          sb.append(nota);       //caso seja espaço em branco ou outro qualquer
                                                      }
                                                      break; 
                                                      break;      
                                                           default:
                         //OBS : Aparece na tela, mas não fecha qndo clico em OK.		             
                                           JOptionPane.showMessageDialog(null, "Novo tom, so aceita A");
                                                                                                            
	         }                                           // Fim Suitch
	                   indice++;                    // leio o próximo caractere na linha atual
                                  }                                                 // Fim while  
		txtarea.setText(txtarea.getText().replace(linhas[i], sb.toString()));
	}                                                   // Fim For
                      }                    
    txtarea.setCaretPosition(0);
}                                          

private void txttomatualActionPerformed(java.awt.event.ActionEvent evt) {                                            
    // TODO add your handling code here:
}

Obrigado

Armando.

Jothar_Aleksander

Melhorando a legibilidade…

[...]{	
		[...]{	
			for(){	
				while(){	
					switch (tomAtual + tomNovo) {     
						case "AB"://1 tom
							//A
							if(nota == 'A'){ 
								if (sus== '#' ){
									sb.append("C"); 
								}else{ 
									sb.append("B");  
								} 
							//B    
							}else if(nota == 'B'){        
							 if (sus== '#'  ){
								sb.append("D");
								
							}else{ 
								sb.append("C#");  
							} 
							//C
							}else if(nota == 'C'){
								if (sus== '#') {
									sb.append("D#"); 
								}else{ 
									sb.append("D");  
								} 
							//D
							} else if(nota == 'D'){
								if (sus== '#' ) {
									sb.append("F"); 
							}else{ 
								sb.append("E");  
							} 
							//E
							} else if(nota == 'E'){
								if (sus== '#' ) {
									sb.append("G"); 
								}else{ 
									sb.append("F#");  
								} 
							//F
							} else if(nota == 'F') {
								if (sus== '#') {
									sb.append("G#"); 
								}else{ 
									sb.append("G");  
								} 
							//G
							} else if(nota == 'G') {
								if (sus== '#') {
									sb.append("A#"); 
								}else{ 
									sb.append("A");  
								} 
							}else if(nota !='#' ){
								sb.append(nota); //caso seja espaço em branco ou outro qualquer
							}
							break;
								 
						case "AC"://1 1/2 tom
							//A  
							if(nota == 'A'){ 
								if (sus== '#' ){
									sb.append("C#"); 
								}else{ 
									sb.append("C");  
								} 
							//B    
							}else if(nota == 'B'){        
								if (sus== '#'  ) {
									sb.append("D#"); 
								}else{ 
									sb.append("D");  
								} 
							//C
							} else if(nota == 'C'){
								if (sus== '#'){
									sb.append("E"); 
								}else{ 
									sb.append("D#");  
								} 
							//D
							}else if(nota == 'D'){
								if (sus== '#' ) {
									sb.append("F#"); 
								}else{ 
									sb.append("F");  
								} 
								//E
							}else if(nota == 'E'){
								if (sus== '#' ){
									sb.append("G#"); 
								}else{ 
									sb.append("G");  
								} 
							//F
							}else if(nota == 'F'){
								if (sus== '#') {
									sb.append("A"); 
								}else{ 
									sb.append("G#");  
								} 
							//G
							}else if(nota == 'G'){
								if (sus== '#') {
									sb.append("B"); 
								}else{ 
									sb.append("A#");  
								} 
							}else if(nota !='#' ){
								sb.append(nota);//caso seja espaço em branco ou outro qualquer
							}
							break;
												
						case "AD": //2 1/2 tom
							//A  
							if(nota == 'A'){ 
								if (sus== '#' ){
									sb.append("D#"); 
								}else{ 
									sb.append("D");  
								} 
							//B    
							}else if(nota == 'B'){        
								if (sus== '#'  ){
									sb.append("F"); 
								}else{ 
									sb.append("E");  
								} 
							//C
							}else if(nota == 'C'){
								if (sus== '#'){
									sb.append("F#"); 
								}else{ 
									sb.append("F");  
								} 
								//D
							}else if(nota == 'D'){
								if (sus== '#' ) {
									sb.append("G#"); 
								}else{ 
									sb.append("G");  
								} 
							//E
							}else if(nota == 'E'){
								if (sus== '#' ) {
									sb.append("A#"); 
								}else{ 
									sb.append("A");  
								} 
							//F
							}else if(nota == 'F'){
								if (sus== '#') {
									sb.append("B"); 
								}else{ 
									sb.append("A#");  
								} 
							//G
							}else if(nota == 'G'){
								if (sus== '#') {
									sb.append("C#"); 
								}else{ 
									sb.append("C");  
								} 
							}else if(nota !='#' ){
								sb.append(nota);//caso seja espaço em branco ou outro qualquer
							}
							break;
															
						case "AE"://3 1/2 tom
							//A  
							if(nota == 'A'){ 
								if (sus== '#' ){
									sb.append("F"); 
								}else{ 
									sb.append("E");  
								} 
							//B    
							}else if(nota == 'B'){        
								if(sus== '#'){
									sb.append("G"); 
								}else{ 
									sb.append("F#");  
								} 
							//C
							}else if(nota == 'C'){
								if(sus== '#') {
									sb.append("G#"); 
								}else{ 
									sb.append("G");  
								} 
							//D
							}else if(nota == 'D') {
								if(sus== '#') {
									sb.append("A#"); 
								}else{ 
									sb.append("A");  
								} 
							//E
							}else if(nota == 'E'){
								if(sus== '#' ) {
									sb.append("C"); 
								}else{ 
									sb.append("B");  
								} 
							//F
							}else if(nota == 'F'){
								if(sus== '#'){
									sb.append("C#"); 
								}else{ 
									sb.append("C");  
								} 
							//G
							}else if(nota == 'G'){
								if(sus== '#') {
									sb.append("D#"); 
								}else{ 
									sb.append("D");  
								} 
							}else if (nota !='#' ){
								sb.append(nota);//caso seja espaço em branco ou outro qualquer
							}
							break;     
						case "AF"://3 1/2 tom
							//A  
							if(nota == 'A'){ 
								if(sus== '#' ){
									sb.append("F#"); 
								}else{ 
									sb.append("F");  
								} 
							//B    
							}else if(nota == 'B'){        
								if(sus== '#'){
									sb.append("G#"); 
								}else{ 
									sb.append("G");  
								} 
							//C
							}else if(nota == 'C'){
								if(sus== '#'){
									sb.append("A"); 
								}else{ 
									sb.append("G#");  
								} 
							//D
							}else if(nota == 'D'){
								if(sus== '#' ){
									sb.append("B"); 
								}else{ 
									sb.append("A#");  
								} 
							//E
							}else if(nota == 'E'){
								if(sus== '#' ){
									sb.append("C#"); 
								}else{ 
									sb.append("C");  
								} 
							//F
							}else if(nota == 'F'){
								if(sus== '#'){
									sb.append("D"); 
								}else{ 
									sb.append("C#");  
								} 
							//G
							}else if(nota == 'G'){
								if(sus== '#'){
									sb.append("E"); 
								}else{ 
									sb.append("D#");  
								} 
							}else if(nota != '#' ){
								sb.append(nota);//caso seja espaço em branco ou outro qualquer
							}
							break; 
							break;      
						default:
							JOptionPane.showMessageDialog(null, "Novo tom, so aceita A");
																													
					}//Fim do switch                                         
						indice++;// leio o próximo caractere na linha atual
				}// Fim while  
				txtarea.setText(txtarea.getText().replace(linhas[i], sb.toString()));
			}// Fim For
		}                    
		txtarea.setCaretPosition(0);
	}                                          
	private void txtTomAtualActionPerformed(java.awt.event.ActionEvent evt){
		[...]
	}
Jothar_Aleksander

Há um break a mais no seu case “AF”. Além disso, ele está dentro de um while e dentro de um for. Talvez ele esteja sendo invocado várias vezes, de modo que quando você ‘fecha’ um outro é invocado, dando a impressão que não foi fechado. O seu código é bem confuso (pelo menos para mim), mas creio que seja isso. De qualquer forma, com a melhoria na legibilidade, talvez alguém consiga ver alguma situação/problema que não enxerguei.

F

Amigo, deixei de avisar, tenho 3 meses que estou estudando Java, não aprendi ainda a programação Orientada a objeto, por isso, encontrei esta maneira errada de programar, somente para ver funcionando, mas esbarrei nesta caixa de JOptionPane.showMessageDialog(null, “Novo tom, so aceita A”); que não fecha quando eu clico em OK. Acho melhor eu rever o código e fazer outra lógica o mais rápido possível,

Obrigado.

Jothar_Aleksander

Mas você tem que entender que o Java é uma linguagem OO, então como programar em uma linguagem OO sem ser em OO? Como sugestão de estudo (linguagem fácil e básica): Curso em Vídeo - POO com Java..

F

Amigos, bom dia,

Esse break a mais, não existe no código, fiz a copia do código em duas partes e sem querer copiei o break duas vezes, mas no código existe somente um, não é esse o erro.

Segue abaixo uma estrutura resumida de como esta o código.

switch (tomAtual + tomNovo) {   

    case "AB":   
            
        break;
        case "AC":     

        break ;
        case "AD":     

       break;
      case "AE":  

      break; 
      default:
    JOptionPane.showMessageDialog(null, "Novo tom, so aceita A, B,C,D e E "); 

}   // fim do Switch
  • Caso continue o erro, eu posso colocar outro comando para avisar na tela a mensagem ???

  • Sei que usei muitos CASEs e IFs, mas gostaria somente de ver funcionando até que eu faça outra lógica e termine de estudar POO.

  • Minha lógica doida e amadora, esta funcionando, somente esta caixa de mensagem que não fecha quando eu coloco outra letra que não seja o A, B,C,D e E. que são os CASEs usados no código.

Obrigado

Armando.

Agradeço desde já e muito obrigado

Jothar_Aleksander

Faça um teste para ver se o JOptionPane é o mesmo depois que você o fecha ou se é outro que é invocado. Para isso adicione o valor do contador do for ou um contador do while. Por exemplo:

JOptionPane.showMessageDialog(null, "Novo tom, so aceita A, B,C,D e E ->[for]: " + i);

F

Amigo, muito boa tarde, obrigado pela resposta.

Quando clico no Ok (várias vezes) da mensagem exibida, o i = 0 sempre, quando clico no X, da caixa JOptionPane.showMessageDialog o i assume os valores 2,3,4,5,6 … conforme vou clicando.

Alguma dica ???

Obrigado.

Jothar_Aleksander

Como eu suspeitava. Como o JOptionPane está em um laço (dois na verdade, um for e um while) ele fica repetindo. Tente vincular o JOptionPane ao frame trocando o null pelo nome da classe que o chama. Talvez resolva.

F

Amigo, boa noite,

Fiz conforme vc pediu, coloquei no lugar do Null a classe que o chama, mesmo erro, coloquei um this.dispose(); para forçar o fechamento.

Muito obrigado.

Criado 30 de setembro de 2019
Ultima resposta 1 de out. de 2019
Respostas 11
Participantes 2