用Java创建自定义监听器
我想知道如何为某些东西创建我自己的监听器,并且能够像任何其他监听器一样使用它,例如。
public interface Listener { public void onListen(Event e); }
然后在我的class上
public class test implements Listener { Object.add(new Listener() { @Override public void onListen(Event e) { } }); }
我想我真正要问的是我在哪里定义如何检查是否发生了与我创建的监听器有关的事情?
如果其中任何一个没有意义,请告诉我,我会澄清它。
如果充其量这对你没有意义,我会试试这个。 如何让侦听器检查combobox中的选定选项是否已更改为其他选项。 我实际上并不需要一个组合代码监听器,这只是一个例子。
这是一个简短的例子:
private static class Position { } private static class Ball { private ArrayList observers = new ArrayList (); private Position ballPosition = new Position(); public void registerObserver(FootballObserver observer) { observers.add(observer); } public void notifyListeners() { for(FootballObserver observer : observers) { observer.notify(ballPosition); } } public void doSomethingWithFootballPosition() { //bounce etc notifyListeners(); } } private static interface FootballObserver { void notify(Position ball); } private static class Player implements FootballObserver { public void notify(Position ball) { System.out.println("received new ball position"); } } public static void main(String... args) { FootballObserver player1 = new Player(); Ball football = new Ball(); football.registerObserver(player1); football.doSomethingWithFootballPosition(); }
创建所需的侦听器没有问题,但是只能将它应用于期望它的类(所以你不能这样做(new Object()).addMyListener
)
您需要向要使用侦听器的类添加addMyListener(MyListener myListener)
方法。 它只是将您传递给它的侦听器存储在列表中供以后用户使用。 使用addMyListener方法(以及fireMyListeners()
)方法创建接口也是一个好主意。
当然,您还必须提供调用fireMyListeners()
方法的代码。 然后fireMyListeners()
将遍历侦听器并调用他们的通知方法。