更改第一个JButton的颜色,直到第二个JButton被点击

时间:2017-10-13 05:24:50

标签: java user-interface jbutton actionlistener

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.*;

public class ButtonsActionListener implements ActionListener {

    private JButton firstButton;
    private JButton secondButton;


    @Override
    public void actionPerformed(ActionEvent e) {
        if (firstClick == null) {
            firstClick = (JButton) e.getSource();
        } else {
            secondClick = (JButton) e.getSource();
            // Do something 
            firstClick = null;
            secondClick = null;
    }
}

}

此类记录用户单击的前两个JButton。 firstButton表示用户单击的第一个按钮,secondButton表示用户单击的第二个按钮。

我希望当用户点击第一个JButton时,它的颜色应该变为红色UNTIL,单击第二个JButton。点击第二个JButton后,我希望第一个JButton的颜色变回原来的颜色。

无论如何,我目前的实施是否有这样做?

3 个答案:

答案 0 :(得分:1)

要保留当前的实现,请尝试使用此类

class ButtonsActionListener implements ActionListener {

    private JButton firstButton;
    private JButton secondButton;

    @Override
    public void actionPerformed(ActionEvent e) {

    if (firstButton == null) {
            firstButton = (JButton) e.getSource();
            firstButton.setBackground(Color.RED);
        } else {
            if (firstButton == (JButton) e.getSource()) {
                firstButton.setBackground(Color.RED);
            } else {
                secondButton = (JButton) e.getSource();
                firstButton.setBackground(null);// reset to original color                    
            }
        }


    }

}

答案 1 :(得分:0)

单击第二个按钮后,您可以将背景颜色设置为默认值。最初,当单击第一个按钮时,如果单击第二个按钮,颜色将变为红色,第一个按钮颜色将变为默认颜色。

public static void main(String[] args) {
        final JButton button = new JButton("Click me");
        final JButton button2 = new JButton("Add");
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                button.setBackground(Color.RED);

            }
        });
        button2.addActionListener( new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                button.setBackground(null);
            }
        });
    }

答案 2 :(得分:0)

要确定点击了哪个按钮,并做出相应的响应,您可以执行以下操作:

class ButtonsActionListener implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {

            if (((JButton) e.getSource()) == firstButton) {
                firstButtonClicked();
            } else if (((JButton) e.getSource()) == secondButton) {
                secondButtonClicked();
           }
    }

    private void firstButtonClicked(){
        System.out.println("1st button clicked ");
        //handle second button color 
    }
    private void secondButtonClicked(){
        System.out.println("2nd button clicked ");
        //handle second button color 
    }   
}