2015-01-15 4 views
0

Ну, что я пытаюсь сделать, это изменить текст JRadioButton, когда они выбраны, я заставил их изменить цвет. Я знаю, что могу это сделать, поставив код, чтобы изменить текст внутри специального метода обработки событий, характерного для каждой кнопки, но как это сделать, чтобы я использовал метод DIFFERENT обработки событий, который просто меняет кнопки? Я уже создал один, но он не работает, вот код:Почему мой метод .isSelected() не работает?

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) { 


} 

} 

ответ

1

, если я правильно Вас понял, вы хотите сделать что-то вроде этого:

//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); 

т.е.. вы определяете один ActionListener, который вы используете во всех своих объектах.

Анонимный объект, который вы определяете в своем исходном коде, ничего не делает, он просто создает ActionListener, к которому никто никогда не сможет получить доступ, поскольку он не назначен ни одной Button.

+0

спасибо, он работал – user4442652

0

Может быть, это может помочь

ActionListener al = new ActionListener() { 

    public void actionPerformed(ActionEvent e) { 

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

спасибо за обратную связь, это работает слишком – user4442652

Смежные вопросы