JavaFX:创建EventHandler

时间:2016-09-19 11:46:17

标签: events javafx

我正在写一个按钮的事件处理程序,在网上我看到了很多这样的代码:

b = new Button("click me");
    b.setOnMouseClicked(new EventHandler<MouseEvent>() {

        @Override
        public void handle(MouseEvent t) {
        /*
            calling several oblects' methods and doing things
        */
        }
    });

如果我有像setGUI这样的方法,我必须创建几个按钮和几个eventhandlers,问题是:是否可以在那里放置很多“动作”?如果我有10个buttons并且每个按钮都有一个event handler,那么我的setGUI将会像500行一样,甚至更多。我试图以这种方式创建一个事件处理程序对象:

public class MyListener implements EventHandler{
@override
public void handle(Event event) {
        //My code
    }
}

但EventHandler是Abstract,我必须实现几种方法。 谷歌搜索我看到了这段代码:

public class AppWithEvents1 extends Application {
    Text text=null;
    public void start(Stage stage) {
        text=new Text(10,50,"Non hai mai cliccato ");
        Button btn = new Button();
        btn.setText("Click me");
        Listener a=new Listener(this);
        btn.addEventHandler(ActionEvent.ACTION, a);
        Group root = new Group(btn);
        root.getChildren().add(text);
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
    }
    public void updateText(int n){
        text.setText("Hai cliccato "+n
        +" volte");
    }
    public static void main(String[] args) {
        Application.launch(args);
    }
} 

他创建了这个类:

class Listener
    implements EventHandler{
        AppWithEvents1 awe=null;
        int counter=0;
        Listener(AppWithEvents1 a){
            awe=a;
        }
    public void handle(Event t) {
        awe.updateText(++counter);
    }
}

他为什么不实施所有抽象方法?

0 个答案:

没有答案
相关问题