как получить цвет фона от кнопки с слушателем действия - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь сделать игру максимально яркой, используя компоненты Java-интерфейса. я застрял здесь, как я могу получить цвет фона моей кнопки, когда происходит действие? в JAVA API есть методы типа JButton.getBackground().

в моей программе, когда я нажимаю кнопку, мне нужен цвет фона этой нажатой кнопки, и я хочу нарисовать овал этого цвета в определенном месте.

это мой код

/**
* Action Listener for Buttons
*/
class ButtonAction implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        setColor(getBackground());  // here i want to get background color as light blue.
    }
}

b1 = new JButton("o");
Color c1 = new Color(100,255,255);// this is light blue color
b1.setBackground(c1);

ActionListener listener = new ButtonAction();
b1.addActionListener(listener);

/**
* this method will set vakue of the color and that color will use to draw oval 
* filled with that color.
*/
public void setColor(Color C) {
    this.c = C;
}

Ответы [ 2 ]

2 голосов
/ 13 марта 2019

Необходимо нажать кнопку, вызвав .getSource() для параметра ActionEvent в ActionListener:

class ButtonAction implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        // get the button that was pressed 
        AbstractButton button = (AbstractButton) e.getSource();

        // get its background Color
        Color color = button.getBackground();

        // TODO: do what you want with the color
    }
}
1 голос
/ 13 марта 2019

getBackground в setColor(getBackground()); относится к this.getBackground(), который является классом, в котором вы реализуете свой код.Это JFrame или какой-то другой объект, который имеет getBackground, но не ваш Button b1.

Вы хотите получить компонент источника события (то есть JButton, по которому щелкнули) и получить его цвет фона (((JComponent)e.getSource()).getBackground()).

...