[Resolvido] Como resolver esse problema?(jRadioButton)

8 respostas
C

Galera, estou criando um Questionário em desk no netbeans é o seguinte:

1- Jlabel onde carrego as perguntas vindas do bando de dados
4- JRadioButtons onde carrego as alternativas vindas do bando de dados

Ai tenho 2 botões Next e Back, onde o usuário pode visualizar até a questão 10 e voltar até a 1° se ele quiser.

O problema é que, caso o usuário responda todas as questões, mais queira voltar para se certificar que está corretas as opções não ficam marcadas. ( è possivel isso, já que limpo essa seleção a cada pergunta?)

O ideal seria, se eu respondi todas as questões e tenho que voltar, cada vez que desse um back, ele selecionava a alternativa que o usuário escolheu. para que ele não precise escolher tudo de novo.

Segue um pedaço do código: ( Se precisarem das classes só me avisar)

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
      
        Respostas resp = new Respostas();
       if(contador ==1){
       if(jRadioButton1.isSelected())
         resp.setQuest1(this.jRadioButton1.getText());
       if(jRadioButton2.isSelected())
       resp.setQuest1(this.jRadioButton2.getText());
       if(jRadioButton3.isSelected())
       resp.setQuest1(this.jRadioButton3.getText());
       if(jRadioButton4.isSelected())
       resp.setQuest1(this.jRadioButton4.getText());
       //aqui insere no banco a resposta.       
       insereNobanco(resp.getQuest1());
       }
        if(contador ==2){
       if(jRadioButton1.isSelected())
         resp.setQuest2(this.jRadioButton1.getText());
       if(jRadioButton2.isSelected())
       resp.setQuest2(this.jRadioButton2.getText());
       if(jRadioButton3.isSelected())
       resp.setQuest2(this.jRadioButton3.getText());
       if(jRadioButton4.isSelected())
       resp.setQuest2(this.jRadioButton4.getText());
       //aqui insere no banco a resposta.       
       insereNobanco(resp.getQuest2());
        }

         if(contador ==3){
       if(jRadioButton1.isSelected())
         resp.setQuest3(this.jRadioButton1.getText());
       if(jRadioButton2.isSelected())
       resp.setQuest3(this.jRadioButton2.getText());
       if(jRadioButton3.isSelected())
       resp.setQuest3(this.jRadioButton3.getText());
       if(jRadioButton4.isSelected())
       resp.setQuest3(this.jRadioButton4.getText());
       //aqui insere no banco a resposta.
       insereNobanco(resp.getQuest3());
        }

        // Aqui da um limpas a opções dos radioButtons
        limpaOpcao();

            
       // TODO add your handling code here:
    }

8 Respostas

drsmachado

Por que não cria um Bean e cria nele variáveis que representem as questões e, cujo valor seja o do radiobutton selecionado, algo como

//codigo aqui
String perg4 = "radio2";
//codigo aqui
C

@drsmachado ,
Não entendi direito pode me explicar com mais detalhes?

drsmachado

Quando uma opção for selecionada e o next for clicado, guarde alguma informação que permita identificar que para aquela questão o determinado jradio foi selecionado.
Pode ser por map, onde a key é a questão e o valor, a identificação do radiobutton selecionado. Assim, independente de ir e voltar, sempre haverá a marcação selecionada (se houver).

C

Blz, acho que deu 60%..rs

criei 2 variáveis para cara pergunta, uma registra o conteudo do Radio e o outro registra o nome do Radio selecionado.

private String resp1 = null;
    private String resp2 = null;
    private String resp3 = null;
    private String jRadioResp1 = null;
    private String jRadioResp2 = null;
    private String jRadioResp3 = null;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
           
        if (contador == 1) {
            if (jRadioButton1.isSelected()) {
                resp1 = jRadioButton1.getText();
                jRadioResp1 = jRadioButton1.getName();
            }

            if (jRadioButton2.isSelected()) {
                resp1 = jRadioButton2.getText();
                jRadioResp1 = jRadioButton2.getName();
            }

            if (jRadioButton3.isSelected()) {
                resp1 = jRadioButton3.getText();
                jRadioResp1 = jRadioButton3.getName();
            }

        }
        if (contador == 2) {
            if (jRadioButton1.isSelected()) {
                resp2 = jRadioButton1.getText();
                 jRadioResp2 = jRadioButton1.getName();
            }


            if (jRadioButton2.isSelected()) {
                resp2 = jRadioButton2.getText();
                 jRadioResp2 = jRadioButton2.getName();
            }

            if (jRadioButton3.isSelected()) {
                resp2 = jRadioButton3.getText();
                 jRadioResp2 = jRadioButton3.getName();

            }
        }
            if (contador == 3) {
                if (jRadioButton1.isSelected()) {
                    resp3 = jRadioButton1.getText();
                     jRadioResp3 = jRadioButton1.getName();
                }
                if (jRadioButton2.isSelected()) {
                    resp3 = jRadioButton2.getText();
                     jRadioResp3 = jRadioButton2.getName();

                }
                if (jRadioButton3.isSelected()) {
                    resp3 = jRadioButton3.getText();
                     jRadioResp3 = jRadioButton3.getName();

                }
            }
Só que e agora? como seria o método que verificar qual radio foi selecionado e o selecione novamente quando der um back coisa do tipo.
public void buscaResp(){
if(contador == 1){
    //aqui contém o nome da Radio selecionado na pergunta1 ex:jRadioButton1.
    jRadioResp1
}
if(contador == 2){
  
    jRadioResp2
}
if(contador == 3){
    
    jRadioResp3
}
drsmachado

Por isso sugeri o Map<String, String>…
Você terá que verificar em que tela está (resp) e, então, verificar qual o conteúdo da variável correspondente if(resp2.equals(radio3)){ radio3.setSelected(true); }

C

@drsmachado

Vou precisar ler um pouco sobre Map não faço a minima idéia de como fazer ou de como funciona.

Mesmo assim Vlw.

drsmachado

Basicamente

Map<String, String> mapa = new HashMap<String, String>();

if(radio3.isSelected()){
 mapa.put("perg2", radio3.getText());
}

//lógica

if(mapa.containsKey("perg2")){
 if(mapa.get("perg2").toString().equals(radio3.getText()){
 radio3.setSelected(true);
}
}

É isso…

C

Puts SInistro!..

Valew funcionou certinho.

Criado 26 de maio de 2011
Ultima resposta 30 de mai. de 2011
Respostas 8
Participantes 2