Slick2D中Java事件的个人实现
我现在正在用Slick2D用Java制作自己的窗口系统,我想在我的窗口中添加按钮!问题是我对事件或诸如此类的事情一无所知。。。无论我在哪里看到的都是JFrames的事件,但我想自己制作它们。下面是我如何使用我的窗口Slick2D中Java事件的个人实现,java,events,delegates,function-pointers,slick2d,Java,Events,Delegates,Function Pointers,Slick2d,我现在正在用Slick2D用Java制作自己的窗口系统,我想在我的窗口中添加按钮!问题是我对事件或诸如此类的事情一无所知。。。无论我在哪里看到的都是JFrames的事件,但我想自己制作它们。下面是我如何使用我的窗口 Window win = new Window("Window title", 0, 0, 300, 100); 那么这就是我现在所在的位置,在我从Window类继承的类中: @Override public void initializeComponents() { B
Window win = new Window("Window title", 0, 0, 300, 100);
那么这就是我现在所在的位置,在我从Window类继承的类中:
@Override
public void initializeComponents() {
Button button1 = new Button("Button caption", 0, 0, 50, 20);
button1.setBackColor(Color.lightGray); // just an example of a set I'd use
button1.setOnClickEvent(button1_OnClick); // this is where I can't get it to work!
this.addComponent(button1);
}
public void button1_OnClick() {
System.out.println("button1 was pressed");
}
我曾经做过C#,我也做过类似的委托,它很管用,但现在Java没有我读到的任何委托(我可能错了)。我基本上想知道是否有一个很好的方法来实现它,这样我就可以这样使用它了
非常感谢 您将需要调查这方面的问题
基本思想是,您将作为观察者(又名:listener)向按钮添加
this
,当按钮做了一些有趣的事情时,它会让其观察者知道,他们可以相应地行动,也可以不行动。您不能将方法作为参数传递。您必须创建一个包含该方法的包装器类
比如:
public interface Callback {
public void onMouseClick();
}
...
public class Button {
...
public void setOnClickEvent(Callback c) {
this.onClickEvent = c;
}
public void update() {
if (clickDetected)
onClickEvent.onMouseClick();
}
}
...
button1.setOnClickEvent(new Callback() {
public void onMouseClick() {
button1_OnClick();
}
}
你不能只通过一个方法。您必须创建一个包含该方法的包装器“回调”类。