user4442652
user4442652

Reputation: 15

Why won't my .isSelected() method work?

Well what i'm trying to do is change the text of the JRadioButton's when they're selected, i got them to change the color. I know I can do it by putting the code to change the text inside the dedicated event handling method specific to each button, but how do I do it so that I use A DIFFERENT event handling method that just changes the buttons? I already created one but it doesn't work, here's the code:

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


public class LessonTwenty extends JFrame implements ActionListener{

JRadioButton b1,b2;
JTextArea t1;
JScrollPane s1;
JPanel jp = new JPanel();

public LessonTwenty()
{


     b1= new JRadioButton("green"); 
    b1.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {

            jp.setBackground(Color.GREEN);
        }
      });
     b2= new JRadioButton("red"); 
        b2.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                jp.setBackground(Color.RED);
            }
          });


        //Method to change the text of the JRadion Buttons, what i'm trying to make work
           new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                 if(b1.isSelected()){
                        b1.setText("Welcome");
                    }
                    else if(b2.isSelected()){
                        b2.setText("Hello");
                    }
            }
          };





    jp.add(b1);
    jp.add(b2);
    this.add(jp);

    setTitle("Card");  
    setSize(700,500);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setVisible(true);
}


public static void main(String [ ] args){


    new LessonTwenty();


}


@Override
public void actionPerformed(ActionEvent e) {


}

}

Upvotes: 0

Views: 1645

Answers (2)

Christian
Christian

Reputation: 395

Maybe this could help

ActionListener al = new ActionListener() {

    public void actionPerformed(ActionEvent e) {

            if(e.getSource() == b1){
                b1.setText("Welcome");
            } else if(e.getSource() == b2){
                b2.setText("Hello");
            }
    }
  };

Upvotes: 0

ths
ths

Reputation: 2942

if i understand you right, you want do do something like this:

//Method to change the text of the JRadion Buttons, what i'm trying to make work
     ActionListener al = new ActionListener() {

        public void actionPerformed(ActionEvent e) {

             if(b1.isSelected()){
                    b1.setText("Welcome");
                }
                else if(b2.isSelected()){
                    b2.setText("Hello");
                }
        }
      };

b1= new JRadioButton("green"); 
b1.addActionListener(al);
b2= new JRadioButton("red"); 
b2.addActionListener(al);

ie. you define one ActionListener which you use in all your objects.

The anonymous object you define in your original code does absolutely nothing, it just creates an ActionListener which nobody can ever access, since it is not assigned to any Button.

Upvotes: 1

Related Questions