我正在尝试通过扩展 AbstractComponent 来制作光滑的按钮:
公共类 StandardButton 扩展 AbstractComponent {
protected int x;
protected int y;
protected int Width;
protected int Height;
protected String Text;
public StandardButton(GUIContext container,int x, int y, String Text, int Width, int Height,ComponentListener listener) {
super(container);
this.Text=Text;
setLocation(x, y);
this.Width=Width;
this.Height=Height;
addListener(listener);
}
@Override
public void render(GUIContext container, Graphics g) throws SlickException {
g.setColor(Color.white);
g.setLineWidth(2f);
g.drawRect(x, y, Width, Height);
g.drawString(Text, x+5, y+(Height/2-4));
}
[...]
在我的状态下:
公共类 UpdaterState 扩展 BasicGameState 实现 ComponentListener { private StandardButton buttonPlay;
@Override
public void init(GameContainer container, final StateBasedGame game)
throws SlickException {
buttonPlay=new StandardButton(container,100,100,"Graj",60,30,new ComponentListener(){
@Override
public void componentActivated(AbstractComponent source) {
State.nextState(0, game);
}
});
但什么也没有发生。当我单击按钮时,我的 nestState 方法没有运行。我应该如何正确地做到这一点?我只想让我的程序在 componentActivated 方法中进行阻塞。这可能吗,或者我只需要检查鼠标是否一直在更新方法中的按钮字段上释放所有按钮?