Изменение цвета кнопки JButton с помощью щелчка не будет работать - PullRequest
1 голос
/ 02 декабря 2011
public class LevelEditorButton extends JButton
{
/**
 * 
 */
private static final long serialVersionUID = 1L;
private int i;

public int getState()   {return i;}
public void increaseState()
{
    if(i == 2)
        i = 0;
    else
        i++;
    changeState();
}

public LevelEditorButton()
{
    i = 0;
    changeState();
    this.setOpaque(true);
}
public void changeState()
{
    if(i == 0)
        this.setBackground(Color.GREEN);
    else if(i == 1)
        this.setBackground(Color.RED);
    else 
        this.setBackground(Color.BLACK);
    this.setOpaque(true);
}
}

public class ChangeColorButtonListener extends LevelEditorButton implements ActionListener
{
     @Override
     public void actionPerformed(ActionEvent ae) 
    {
    this.increaseState();
    }

}

Программирование на моем Mac всегда приводит к странным ошибкам с JButtons, поэтому я немного заблудился в том, куда идти дальше. Когда я отлаживаю его, он показывает, что цвет кнопки изменился, но не будет отображаться на экране. Я пробовал repaint (), revalidate () и updateUI (). Любая помощь будет принята с благодарностью.

1 Ответ

5 голосов
/ 02 декабря 2011

Проблема в том, что вы никогда не применяете свой ActionListener к кнопке. Два решения для этого:

создайте конструктор и примените здесь себя в качестве слушателя

ChangeColorButtonListener(){
        this.addActionListener(this);
    }

или сделайте это в классе вызова следующим образом:

ChangeColorButtonListener  ccb = new ChangeColorButtonListener();
ccb.addActionListener(ccb);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...