3

以下のコードは、赤、緑、青の3つのボタンのいずれかを選択したときに背景の色を変更するためのものです。どちらかを選択しても、実際には何も起こりません。ただし、JButtonsからJRadioButtonsまたはJToggleButtonsへの変更は機能します。誰もが理由を知っていますか?JButton.isselected()メソッドにバグがあり、常にfalseを返すためですか?助けてくれてありがとう...ありがとう。

public class bgcolor2 extends JFrame
{
private static final int FRAME_WIDTH = 300;
private static final int FRAME_HEIGHT= 400;
private ActionListener listener;
private JButton greenbutton;
private JButton redbutton;
private JButton bluebutton;
private JPanel colorpanel;
private JPanel buttonpanel;

public bgcolor2()
{
    colorpanel = new JPanel();
    add(colorpanel,BorderLayout.CENTER);

    class bgcolorlistener implements ActionListener
    {
        public void actionPerformed(ActionEvent event)
        {
            changebgcolor();    
        }
    }
    listener=new bgcolorlistener();
    createbuttons();
    setSize(FRAME_WIDTH,FRAME_HEIGHT);
}

public void createbuttons()
{
    greenbutton = new JButton("Green");
    greenbutton.addActionListener(listener);
    bluebutton = new JButton("Blue");
    bluebutton.addActionListener(listener);
    redbutton = new JButton("Red");
    redbutton.addActionListener(listener);
    buttonpanel = new JPanel();

    buttonpanel.add(greenbutton);
    buttonpanel.add(redbutton);
    buttonpanel.add(bluebutton);
    add(buttonpanel,BorderLayout.SOUTH);
}

public void changebgcolor()
{
    if (greenbutton.isSelected()) 
        {
            colorpanel.setBackground(new Color(0,255,0));
        }
    if (bluebutton.isSelected()) 
        {
            colorpanel.setBackground(new Color(0,0,255));
        }
    if (redbutton.isSelected()) 
        {
            colorpanel.setBackground(new Color(255,0,0));
        }
}
}
4

1 に答える 1

7

このisSelected()方法は、通常のボタンではなく、トグルボタンに対して機能します。

あなたの場合、イベントのソースを追跡する必要があります。クリックされたボタンは。で取得できますevent.getSource()

于 2012-09-09T08:42:14.687 に答える