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"://1tomif(nota=='A'){if(sus=='#'){sb.append("C");}else{sb.append("B");}//B}elseif(nota=='B'){if(sus=='#'){sb.append("D");}else{sb.append("C#");}//C}elseif(nota=='C'){if(sus=='#'){sb.append("D#");}else{sb.append("D");}//D...break;default:JOptionPane.showMessageDialog(null,"Novo tom, so aceita A e C");
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"://1tom//Aif(nota=='A'){if(sus=='#'){sb.append("C");}else{sb.append("B");}//B}elseif(nota=='B'){if(sus=='#'){sb.append("D");}else{sb.append("C#");}//C}elseif(nota=='C'){if(sus=='#'){sb.append("D#");}else{sb.append("D");}//D}elseif(nota=='D'){if(sus=='#'){sb.append("F");}else{sb.append("E");}//E}elseif(nota=='E'){if(sus=='#'){sb.append("G");}else{sb.append("F#");}//F}elseif(nota=='F'){if(sus=='#'){sb.append("G#");}else{sb.append("G");}//G}elseif(nota=='G'){if(sus=='#'){sb.append("A#");}else{sb.append("A");}}elseif(nota!='#'){sb.append(nota);//casosejaespaçoembrancoououtroqualquer}break;case"AC"://11/2tom//Aif(nota=='A'){if(sus=='#'){sb.append("C#");}else{sb.append("C");}//B}elseif(nota=='B'){if(sus=='#'){sb.append("D#");}else{sb.append("D");}//C}elseif(nota=='C'){if(sus=='#'){sb.append("E");}else{sb.append("D#");}//D}elseif(nota=='D'){if(sus=='#'){sb.append("F#");}else{sb.append("F");}//E}elseif(nota=='E'){if(sus=='#'){sb.append("G#");}else{sb.append("G");}//F}elseif(nota=='F'){if(sus=='#'){sb.append("A");}else{sb.append("G#");}//G}elseif(nota=='G'){if(sus=='#'){sb.append("B");}else{sb.append("A#");}}elseif(nota!='#'){sb.append(nota);//casosejaespaçoembrancoououtroqualquer}break;case"AD"://21/2tom//Aif(nota=='A'){if(sus=='#'){sb.append("D#");}else{sb.append("D");}//B}elseif(nota=='B'){if(sus=='#'){sb.append("F");}else{sb.append("E");}//C}elseif(nota=='C'){if(sus=='#'){sb.append("F#");}else{sb.append("F");}//D}elseif(nota=='D'){if(sus=='#'){sb.append("G#");}else{sb.append("G");}//E}elseif(nota=='E'){if(sus=='#'){sb.append("A#");}else{sb.append("A");}//F}elseif(nota=='F'){if(sus=='#'){sb.append("B");}else{sb.append("A#");}//G}elseif(nota=='G'){if(sus=='#'){sb.append("C#");}else{sb.append("C");}}elseif(nota!='#'){sb.append(nota);//casosejaespaçoembrancoououtroqualquer}break;case"AE"://31/2tom//Aif(nota=='A'){if(sus=='#'){sb.append("F");}else{sb.append("E");}//B}elseif(nota=='B'){if(sus=='#'){sb.append("G");}else{sb.append("F#");}//C}elseif(nota=='C'){if(sus=='#'){sb.append("G#");}else{sb.append("G");}//D}elseif(nota=='D'){if(sus=='#'){sb.append("A#");}else{sb.append("A");}//E}elseif(nota=='E'){if(sus=='#'){sb.append("C");}else{sb.append("B");}//F}elseif(nota=='F'){if(sus=='#'){sb.append("C#");}else{sb.append("C");}//G}elseif(nota=='G'){if(sus=='#'){sb.append("D#");}else{sb.append("D");}}elseif(nota!='#'){sb.append(nota);//casosejaespaçoembrancoououtroqualquer}break;case"AF"://31/2tom//Aif(nota=='A'){if(sus=='#'){sb.append("F#");}else{sb.append("F");}//B}elseif(nota=='B'){if(sus=='#'){sb.append("G#");}else{sb.append("G");}//C}elseif(nota=='C'){if(sus=='#'){sb.append("A");}else{sb.append("G#");}//D}elseif(nota=='D'){if(sus=='#'){sb.append("B");}else{sb.append("A#");}//E}elseif(nota=='E'){if(sus=='#'){sb.append("C#");}else{sb.append("C");}//F}elseif(nota=='F'){if(sus=='#'){sb.append("D");}else{sb.append("C#");}//G}elseif(nota=='G'){if(sus=='#'){sb.append("E");}else{sb.append("D#");}}elseif(nota!='#'){sb.append(nota);//casosejaespaçoembrancoououtroqualquer}break;break;default://OBS:Aparecenatela,masnãofechaqndoclicoemOK.JOptionPane.showMessageDialog(null,"Novo tom, so aceita A");}//FimSuitchindice++;//leioopróximocaracterenalinhaatual}//Fimwhiletxtarea.setText(txtarea.getText().replace(linhas[i],sb.toString()));}//FimFor}txtarea.setCaretPosition(0);}privatevoidtxttomatualActionPerformed(java.awt.event.ActionEventevt){//TODOaddyourhandlingcodehere:}
Obrigado
Armando.
Jothar_Aleksander
Melhorando a legibilidade…
[...]{[...]{for(){while(){switch(tomAtual+tomNovo){case"AB"://1tom//Aif(nota=='A'){if(sus=='#'){sb.append("C");}else{sb.append("B");}//B}elseif(nota=='B'){if(sus=='#'){sb.append("D");}else{sb.append("C#");}//C}elseif(nota=='C'){if(sus=='#'){sb.append("D#");}else{sb.append("D");}//D}elseif(nota=='D'){if(sus=='#'){sb.append("F");}else{sb.append("E");}//E}elseif(nota=='E'){if(sus=='#'){sb.append("G");}else{sb.append("F#");}//F}elseif(nota=='F'){if(sus=='#'){sb.append("G#");}else{sb.append("G");}//G}elseif(nota=='G'){if(sus=='#'){sb.append("A#");}else{sb.append("A");}}elseif(nota!='#'){sb.append(nota);//casosejaespaçoembrancoououtroqualquer}break;case"AC"://11/2tom//Aif(nota=='A'){if(sus=='#'){sb.append("C#");}else{sb.append("C");}//B}elseif(nota=='B'){if(sus=='#'){sb.append("D#");}else{sb.append("D");}//C}elseif(nota=='C'){if(sus=='#'){sb.append("E");}else{sb.append("D#");}//D}elseif(nota=='D'){if(sus=='#'){sb.append("F#");}else{sb.append("F");}//E}elseif(nota=='E'){if(sus=='#'){sb.append("G#");}else{sb.append("G");}//F}elseif(nota=='F'){if(sus=='#'){sb.append("A");}else{sb.append("G#");}//G}elseif(nota=='G'){if(sus=='#'){sb.append("B");}else{sb.append("A#");}}elseif(nota!='#'){sb.append(nota);//casosejaespaçoembrancoououtroqualquer}break;case"AD"://21/2tom//Aif(nota=='A'){if(sus=='#'){sb.append("D#");}else{sb.append("D");}//B}elseif(nota=='B'){if(sus=='#'){sb.append("F");}else{sb.append("E");}//C}elseif(nota=='C'){if(sus=='#'){sb.append("F#");}else{sb.append("F");}//D}elseif(nota=='D'){if(sus=='#'){sb.append("G#");}else{sb.append("G");}//E}elseif(nota=='E'){if(sus=='#'){sb.append("A#");}else{sb.append("A");}//F}elseif(nota=='F'){if(sus=='#'){sb.append("B");}else{sb.append("A#");}//G}elseif(nota=='G'){if(sus=='#'){sb.append("C#");}else{sb.append("C");}}elseif(nota!='#'){sb.append(nota);//casosejaespaçoembrancoououtroqualquer}break;case"AE"://31/2tom//Aif(nota=='A'){if(sus=='#'){sb.append("F");}else{sb.append("E");}//B}elseif(nota=='B'){if(sus=='#'){sb.append("G");}else{sb.append("F#");}//C}elseif(nota=='C'){if(sus=='#'){sb.append("G#");}else{sb.append("G");}//D}elseif(nota=='D'){if(sus=='#'){sb.append("A#");}else{sb.append("A");}//E}elseif(nota=='E'){if(sus=='#'){sb.append("C");}else{sb.append("B");}//F}elseif(nota=='F'){if(sus=='#'){sb.append("C#");}else{sb.append("C");}//G}elseif(nota=='G'){if(sus=='#'){sb.append("D#");}else{sb.append("D");}}elseif(nota!='#'){sb.append(nota);//casosejaespaçoembrancoououtroqualquer}break;case"AF"://31/2tom//Aif(nota=='A'){if(sus=='#'){sb.append("F#");}else{sb.append("F");}//B}elseif(nota=='B'){if(sus=='#'){sb.append("G#");}else{sb.append("G");}//C}elseif(nota=='C'){if(sus=='#'){sb.append("A");}else{sb.append("G#");}//D}elseif(nota=='D'){if(sus=='#'){sb.append("B");}else{sb.append("A#");}//E}elseif(nota=='E'){if(sus=='#'){sb.append("C#");}else{sb.append("C");}//F}elseif(nota=='F'){if(sus=='#'){sb.append("D");}else{sb.append("C#");}//G}elseif(nota=='G'){if(sus=='#'){sb.append("E");}else{sb.append("D#");}}elseif(nota!='#'){sb.append(nota);//casosejaespaçoembrancoououtroqualquer}break;break;default:JOptionPane.showMessageDialog(null,"Novo tom, so aceita A");}//Fimdoswitchindice++;//leioopróximocaracterenalinhaatual}//Fimwhiletxtarea.setText(txtarea.getText().replace(linhas[i],sb.toString()));}//FimFor}txtarea.setCaretPosition(0);}privatevoidtxtTomAtualActionPerformed(java.awt.event.ActionEventevt){[...]}
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
filosi
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
filosi
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 ");}//fimdoSwitch
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
filosi
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
filosi
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.