Dúvida JRadioButton

2 respostas
FelipeFejfar

Olá pessoal,

venho com mais uma dúvida:
Copiei este exemplo do site da Impacta Online(curso IAD que eu faço). o exemplo deveria mostrar um frame com as 4 caixas de seleção, e cada caixa mudaria a fonte do texto do text field, porém o programa só mostra 3 caixas de seleção e não muda a fonte.
OBS.: Copiei o exemplo exatamente como estava no site.

package swing;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ExemploJRadioButton extends JFrame {
	private JRadioButton radioButtonNormal;
	private JRadioButton radioButtonNegrito;
	private JRadioButton radioButtonItalico;
	private JRadioButton radioButtonItalicoNegrito;
	private ButtonGroup radioGroup;
	private JTextField texto;
	private Font fonteNormal;
	private Font fonteNegrito;
	private Font fonteItalico;
	private Font fonteItalicoNegrito;
	private Container c;
	private TratadoraEventoJRadioButton tratadoraJRadioButton;
	
	public ExemploJRadioButton(){
		super("RadioButton exemplo");
		c=getContentPane();
		c.setLayout(new FlowLayout());
		texto=new JTextField("Clique no botões para ver o resultado",25);
		c.add(texto);
		tratadoraJRadioButton=new TratadoraEventoJRadioButton();
		radioGroup=new ButtonGroup();
		//criação dos JRadioGroups
		radioButtonNormal=adicionarRadio("Normal", true);
		radioButtonNegrito=adicionarRadio("Negrito",false);
		radioButtonItalico=adicionarRadio("Itálico",false);
		radioButtonItalicoNegrito=adicionarRadio("Negrito + Italico",false);
		//criação das fontes
		fonteNormal=new Font("TimesRoman",Font.PLAIN,14);
		fonteNegrito=new Font("TimesRoman",Font.BOLD,14);
		fonteItalico=new Font("TimesRoman",Font.ITALIC,14);
		fonteItalicoNegrito=new Font("TimesRoman",Font.BOLD + Font.ITALIC,14);
		texto.setFont(fonteNormal);
		setSize(330,100);
		//centraliza o frame
		setLocationRelativeTo(null);
		//encerra o programa quando o x for clicado
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}
	public static void main(String args[]){
		ExemploJRadioButton frame=new ExemploJRadioButton();
	}
	//definição do método para adicionar componentes 
	private JRadioButton adicionarRadio(String nome,boolean b){
		JRadioButton radioBot=new JRadioButton(nome, b);
		c.add(radioBot);
		radioGroup.add(radioBot);
		return radioBot;
	}
	private class TratadoraEventoJRadioButton implements ItemListener{
		public void itemStateChanged(ItemEvent e){
			if(e.getSource()==radioButtonNormal){
				texto.setFont(fonteNormal);
			}else if(e.getSource()==radioButtonNegrito){
				texto.setFont(fonteNegrito);
			}else if(e.getSource()==radioButtonItalico){
				texto.setFont(fonteItalico);
			}else if(e.getSource()==radioButtonItalicoNegrito){
				texto.setFont(fonteItalicoNegrito);
			}
			texto.repaint();
		}
	}
}

Valeu :slight_smile:

2 Respostas

gaulix

Faltou duas linhas de código ai, ou o livro está errado, olhe:

package swing; 

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ExemploJRadioButton extends JFrame {

    private JRadioButton radioButtonNormal;
    private JRadioButton radioButtonNegrito;
    private JRadioButton radioButtonItalico;
    private JRadioButton radioButtonItalicoNegrito;
    private ButtonGroup radioGroup;
    private JTextField texto;
    private Font fonteNormal;
    private Font fonteNegrito;
    private Font fonteItalico;
    private Font fonteItalicoNegrito;
    private Container c;
    private TratadoraEventoJRadioButton tratadoraJRadioButton;

    public ExemploJRadioButton() {
        super("RadioButton exemplo");
        c = getContentPane();
        c.setLayout(new FlowLayout());
        texto = new JTextField("Clique no botões para ver o resultado", 25);
        c.add(texto);
        tratadoraJRadioButton = new TratadoraEventoJRadioButton();
        radioGroup = new ButtonGroup();
        //criação dos JRadioGroups
        radioButtonNormal = adicionarRadio("Normal", true);
        radioButtonNegrito = adicionarRadio("Negrito", false);
        radioButtonItalico = adicionarRadio("Itálico", false);
        radioButtonItalicoNegrito = adicionarRadio("Negrito + Italico", false);
        //criação das fontes
        fonteNormal = new Font("TimesRoman", Font.PLAIN, 14);
        fonteNegrito = new Font("TimesRoman", Font.BOLD, 14);
        fonteItalico = new Font("TimesRoman", Font.ITALIC, 14);
        fonteItalicoNegrito = new Font("TimesRoman", Font.BOLD + Font.ITALIC, 14);
        texto.setFont(fonteNormal);
        setSize(330, 100);
        //centraliza o frame
        setLocationRelativeTo(null);
        //encerra o programa quando o x for clicado
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();//essa linha dá um pack no seu JFrame, ele irá ajustar a tela de acordo com seus componentes.
        setVisible(true);
    }

    public static void main(String args[]) {
        ExemploJRadioButton frame = new ExemploJRadioButton();
    }
    //definição do método para adicionar componentes 

    private JRadioButton adicionarRadio(String nome, boolean b) {
        JRadioButton radioBot = new JRadioButton(nome, b);
        radioBot.addItemListener(tratadoraJRadioButton);//faltou adicionar o evento para cada JRadioButton
        c.add(radioBot);
        radioGroup.add(radioBot);
        return radioBot;
    }

    private class TratadoraEventoJRadioButton implements ItemListener {

        @Override
        public void itemStateChanged(ItemEvent e) {
            if (e.getSource() == radioButtonNormal) {
                texto.setFont(fonteNormal);
            } else if (e.getSource() == radioButtonNegrito) {
                texto.setFont(fonteNegrito);
            } else if (e.getSource() == radioButtonItalico) {
                texto.setFont(fonteItalico);
            } else if (e.getSource() == radioButtonItalicoNegrito) {
                texto.setFont(fonteItalicoNegrito);
            }
            texto.repaint();
        }
    }
}
FelipeFejfar

Realmente estava na apostila. Eu acabei não copiando.
hahaha

Valeu!

:slight_smile:

Criado 28 de novembro de 2012
Ultima resposta 28 de nov. de 2012
Respostas 2
Participantes 2