Trocar JRadionButton quando for selecionado

7 respostas
java
L

Tenho uma aplicação em JFrame que possui 2 imagens e 2 JRadioButton, e quando um JRadioButton é selecionado ele troca as imagens, mas gostaria que trocasse também os JRadioButton para verificar a resposta do usuário.

`import java.awt.FlowLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;

import javax.swing.*;

import javax.swing.Icon;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JRadioButton;

import java.io.*;
import java.net.Socket;

public class tela1 extends JFrame {

public JLabel ivas,texto, ifla, iflu, ibot, img1, img2, b1;
public JRadioButton rb1, rb2, rb3, rb4;
private ButtonGroup grupo1, grupo2;
public boolean radio, radio2, radio3;
int f, v, fl;
public tela1() {

super(Times de Futebol);

setLayout(null);

setExtendedState( MAXIMIZED_BOTH );

texto = new JLabel(Qual é o melhor?);

texto.setBounds(650, 0, 100, 100 );

add(texto);
Icon fla = new ImageIcon("fla.png");
    img1 = new JLabel(fla);
    img1.setBounds(300, 80, 300, 300 );
    add(img1);

    Icon vas = new ImageIcon("vas.png");
    img2 = new JLabel(vas);
    img2.setBounds(700, 80, 300, 300 );
    add(img2);

  //Create a window using JFrame with title ( Set JButton text bold and italic )
    JFrame frame=new JFrame("Set JButton text bold and italic");

   
    rb1 = new JRadioButton("Flamengo", false);
    rb2 = new JRadioButton("Vasco", false);
    rb1.setBounds(400, 370, 100, 100);
    rb2.setBounds(800, 370, 100, 100 );
    add(rb1);
    add(rb2);

    grupo1 = new ButtonGroup();
    grupo1.add(rb1);
    grupo1.add(rb2);
    
    rb3 = new JRadioButton("Fluminense", false);
    rb4 = new JRadioButton("Botafogo", false);
    rb3.setBounds(400, 370, 100, 100);
    rb4.setBounds(800, 370, 100, 100 );
	add(rb3);
    add(rb4);
    grupo1 = new ButtonGroup();
    
    
    rb1.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
        	img1.setIcon(new ImageIcon(getClass().getResource("flu.png")));
        	img2.setIcon(new ImageIcon(getClass().getResource("bot.png")));
        	
            }
          
                });
                
    rb2.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
        	img1.setIcon(new ImageIcon(getClass().getResource("flu.png")));
        	img2.setIcon(new ImageIcon(getClass().getResource("bot.png")));
        	
            }
          
                });

}
}`

7 Respostas

JeanJavaMan

Bom eu acho q entendi, oq vc quer é q quando um JRadionButton seja clicado o outro seja desmarcado não é isso?
é simples, basta no evento do JRadio vc verificar se o outro ta selecionado ex:

if(rb1.isSelected){
   //se estive selecionado então desmarca
   rb1.setSelected(false);
}
L

gostaria que quando aparecesse as novas imagens aparecesse também 2 novos JRadio no lugar dos antigos, para que eu possa continuar o questionário com o usuário.

Obrigada pela atenção!

JeanJavaMan

Seria bem complicado no caso em, vc teria q remover os antigos getContentPane().remove()
e depois add os outros novos getContentPane().add()
Não seria mais fácil apenas salvar o que foi selecionado e mudar apenas o texto do JradionButton?
Ou utilizar JTabbedpanel? que assim pode ter varias telas em uma unica tela?

L

Realmente, você tem razão. Como eu guardaria a informação dada e mudaria o texto?

Desculpa o incomodo, obrigada.

JeanJavaMan

incomodo algum :slight_smile: Bom vamos pensar de uma forma bem simples! vamos dizer que vc precisa mudar Jradion button 3 vezes crie uma variável int que vai contar toda as vezes que o usuário clicar no JRadion ai no evento ex:
vamos chamar nossa varivel de contador
ai no evento:

if(contador == 0){ 
    //troque a imagem
    //Mudamos o texto
    rb1.setText("Outro texto");
    //ai aumentamos nosso contador para mais + 1;
    contador++;
} else if(contador == 1){
    //o que vc quer q aconteça na segunda fez
    rb1.setText("Mais outro texto)";
    contador++;
}

essa seria uma logica bem simples, e sem muitos problemas! e qual o tipo de dados q vc salvaria?
Se vc quiser uma forma bem mais bonitão q vc possa adicionar quantos JRadion buttons quiser e tudo mais de uma olhada aqui: Usando JtabbePanel
Agora se vc estive usando javaFX seria bem muito mais fácil, no javaFX é só mudar a Cena(Scene)

L

Eu consegui trocar as imagens e também os textos do RadioButton, mas não consigo tirar a seleção do rb1, será que teria como eu trocá-lo pelo rb3. Obs: rb1 e rb3 são meus JRadioButton.

Grata!!:slightly_smiling:

JeanJavaMan

para tirar a seleção use o rb1.setSelected(false); não tem como fazer essa troca de maneira fácil, teria que ser usando getContentPane().add() e getContentPane().remove() e colocar ele na posição correta do seu Jframe e tudo mais!

Criado 21 de janeiro de 2016
Ultima resposta 21 de jan. de 2016
Respostas 7
Participantes 2