Habilitar objetos com JRadioButton selecionado

6 respostas
V
Olá pessoal, estou com a seguinte dúvida: Tenho 2 botões radio em que na seleção de qualquer um deles eu habilito outros objetos no meu JForm (JButtons, JLabels, TExtfields, etc.). O programa compila mas na hora de execução da um erro de "NullPointerException" na linha assinalada.
btRadio.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
                botaoSelecionado(evt);
            }
        });

btRadio2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
                botaoSelecionado(evt);
            }
        });

private void botaoSelecionado(java.awt.event.ActionEvent evt) {  
        btCalcula.setEnabled(btRadio.isSelected()); //gera erro aki!
        btCalcula.setEnabled(btRadio2.isSelected());
        tfResultado.setEnabled(btRadio.isSelected());
        tfResultado.setEnabled(btRadio2.isSelected());
    }
Tb tentei assim e deu erro no if
private void botaoSelecionado(java.awt.event.ActionEvent evt) {
if ((btRadio.isSelected()) || (btRadio2.isSelected())){
        btCalcula.setEnabled(true); 
        tfResultado.setEnabled(true);
    }     
  }
Obrigado pela ajuda :thumbup:

6 Respostas

ViniGodoy

Tem certeza que a variável btRadio foi criada?

V

viniGodoy, criei sim mas mesmo assim continua apresentando o erro.

private JRadioButton btRadio;
private JRadioButton btRadio2;

JRadioButton btRadio = new JRadioButton(“Selecao 1”);

( crio o actionListener)

JRadioButton btRadio2 = new JRadioButton(“Selecao 2”);

(crio o actionListener)

…
ViniGodoy

O jeito mais fácil é usar um depurador, colocar um breakpoint na linha e ver qual objeto está nulo.

ksi
Cara vc inicializou esse objeto "btCalcula"?

As vezes vc pode ter esquecido de iniciazá-lo.

Cara vc inicializou esse objeto “btCalcula”?

As vezes vc pode ter esquecido de iniciazá-lo.

V

Ksi / ViniGodoy, fiz as alterações, não esta gerando mais exception, mas tb não habilita os objetos. O q pode ser?

Estou postando o codigo aki.

Classe Tela
package Pacote;

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

public class Tela extends JFrame{
    private ButtonGroup btGrupoRadio;
    private JRadioButton btRadio;
    private JRadioButton btRadio2;
    private JLabel lblValor;
    private JLabel lblResultado;
    private JTextField tfValor;
    private JTextField tfResultado;
    private JButton btCalcula;
    private JButton btSair;
    
    public Tela() {
        setTitle("Realizar Calculo");
        ButtonGroup btGrupoRadio = new ButtonGroup();
        JRadioButton btRadio = new JRadioButton("Dobro");
        getContentPane().add(btRadio);
        btRadio.setBounds(30, 50, 90, 23);
        btRadio.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent evt) {
            botaoSelecionado(evt);
             }
        });
        
        JRadioButton btRadio2 = new JRadioButton("Quadrado");
        getContentPane().add(btRadio2);
        btRadio2.setBounds(30, 70, 90, 23);
        btRadio2.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent evt) {
           botaoSelecionado(evt);
            }
        });
        btGrupoRadio.add(btRadio);
        btGrupoRadio.add(btRadio2);
        
        lblValor = new JLabel("Valor:");
        getContentPane().add(lblValor);
        lblValor.setBounds(30, 120, 50, 20);
        
        JTextField tfValor = new JTextField();
        getContentPane().add(tfValor);
        tfValor.setBounds(100, 120, 80, 20);
        tfValor.setEnabled(false);
        
        JLabel lblResultado = new JLabel("Resultado:");
        getContentPane().add(lblResultado);
        lblResultado.setBounds(30, 150, 60, 20);// coluna,linha,largura,altura
        
        JTextField tfResultado = new JTextField();
        getContentPane().add(tfResultado);
        tfResultado.setBounds(100, 150, 80, 20);
        tfResultado.setEnabled(false);
        
        JButton btCalcula = new JButton("Calcula");
        btCalcula.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent evt) {
                //acaoCalcular
            }
        });
        btCalcula.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                //acaoCalcular
            }
        });
        getContentPane().add(btCalcula);
        btCalcula.setBounds(80, 200, 110, 33);
        btCalcula.setEnabled(false);
        
        JButton btSair = new JButton("Sair");
        btSair.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent evt) {
                //acaoSair
            }
        });
        btSair.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                //acaoSair
            }
        });
        getContentPane().add(btSair);
        btSair.setBounds(200, 200, 110, 33);// coluna,linha,largura,altura
        btSair.setEnabled(false);
        
        JDesktopPane tela = new JDesktopPane();
        setContentPane(tela);
        
        tela.add(btRadio);
        tela.add(btRadio2);
        tela.add(lblValor);
        tela.add(lblResultado);
        tela.add(tfValor);
        tela.add(tfResultado);
        tela.add(btCalcula);
        tela.add(btSair);
        setSize(400,400);
        setLocationRelativeTo(null);
 	setVisible(true);
        
    }
    
      //outra forma 
     /*public void botaoSelecionado(ActionEvent evt){
           tfValor.setEnabled(btRadio.isSelected());
           tfValor.setEnabled(btRadio2.isSelected());
           tfResultado.setEnabled(btRadio.isSelected());
           tfResultado.setEnabled(btRadio2.isSelected());
           btCalcula.setEnabled(btRadio.isSelected());
           btCalcula.setEnabled(btRadio2.isSelected());
           btSair.setEnabled(btRadio.isSelected());
           btSair.setEnabled(btRadio2.isSelected());
         }*/
  
     public void botaoSelecionado(ActionEvent evt){
         //ficou meio escroto eh isso mesmo?
         JRadioButton btRadio = new JRadioButton("Dobro");
         JRadioButton btRadio2 = new JRadioButton("Quadrado");
     if ((btRadio.isSelected()) || (btRadio2.isSelected())){
            //JTextField tfValor = new JTextField(); 
            tfValor.setEnabled(true);
            tfResultado.setEnabled(true);
            btCalcula.setEnabled(true);
            btSair.setEnabled(true);
         }
      }
}
Classe Main
package Pacote;
import Pacote.Tela;
import javax.swing.*;

public class Main {
 private Tela tela = null;   
    
    public Main() {
        tela = new Tela();
        tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //para nao fechar o sistema direto
    }
    
   public static void main(String[] args) {
     new Main();   
    }
    
}

:thumbup:

V

Alguém sabe pq não esta habilitando os objetos?

[]´s

Criado 5 de janeiro de 2007
Ultima resposta 14 de jan. de 2007
Respostas 6
Participantes 3