0

私はJavaが初めてで、プログラミング全般を行っています。選択時に背景色を変更するラジオボタンを作成する演習を試みています。現在、Eclipse IDEを使用しています。

Eclipse でエラーが発生することはなく、b/m プログラムを正常に実行できます。ラジオ ボタンが表示され、クリック可能になっています。ただし、ラジオ ボタンを選択しても、背景色を変更できません。私が得ることができる答えと指針をいただければ幸いです。

ありがとう!

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


    public class Gui{
    //Declares Variables
    JRadioButton red=new JRadioButton("red");
    JRadioButton blue=new JRadioButton("blue");
    JRadioButton yellow=new JRadioButton("yellow");
    ButtonGroup group = new ButtonGroup();
    //Constructor
    public Gui(){
        //Sets title
        super("RadioButton Exercise");
        //Sets layout as default
        setLayout(new FlowLayout());
        //Adds the JRadioButtons
        add(red);
        add(blue);
        add(yellow);
        //Groups the variables
        group.add(red);
        group.add(blue);
        group.add(yellow);
        //Creates HandlerClass object
        HandlerClass handler = new HandlerClass();
        //When buttons are clicked, HandlerClass is called
        red.addItemListener(handler);
        blue.addItemListener(handler);
        yellow.addItemListener(handler);


    }

    public class HandlerClass implements ItemListener{
        public void itemStateChanged(ItemEvent x){
            if(x.getSource()==red){
                setBackground(Color.RED);
            }
            else if(x.getSource()==blue){
                setBackground(Color.BLUE);
            }
            else{
                setBackground(Color.YELLOW);
            }
        }
    }



    }
4

2 に答える 2

0

のような条件がありますx.getSource()==red。比較しませんobjects。比較しobject referencesます。したがって、2 つの異なるオブジェクト参照が同じオブジェクトを指している場合でも、そのような式は生成されFalseます。

オブジェクトを比較したい場合は、equalsメソッドを使用する必要があります。equal意味のある結果を生成するには、2 つのオブジェクトが同じタイプである必要があります。

次のことをお勧めします。(JradioButton)x.getSource().equals(red);

于 2013-04-05T13:52:04.657 に答える