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();
}
}
Run Code Online (Sandbox Code Playgroud)
在我的Mac上进行编程总是会给我带来JButton的奇怪错误,所以我有点迷失在哪里.当我调试它时,它显示按钮的颜色已更改但不会显示在屏幕上.我尝试过repaint(),revalidate()和updateUI().任何帮助将不胜感激.
问题是你永远不会将ActionListener应用于按钮.两个解决方案:
创建一个构造函数并将其自身应用为侦听器
ChangeColorButtonListener(){
this.addActionListener(this);
}
Run Code Online (Sandbox Code Playgroud)
或者在调用类中这样做:
ChangeColorButtonListener ccb = new ChangeColorButtonListener();
ccb.addActionListener(ccb);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |