我正在写一个按钮的事件处理程序,在网上我看到了很多这样的代码:
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);
}
}
他为什么不实施所有抽象方法?