。我一直在尋找這個問題,但我還沒有在這裏找到它,所以我想這真的很簡單。如何僅使用一個事件處理類爲JavaFX中的同一個節點處理多個事件?每個人都有
我用一個按鈕在JavaFX中創建了一個非常簡單的應用程序。現在我想處理它的事件(比如當它被按下或者它被釋放時),但是當我看到互聯網上的例子時,它們都使用匿名類(每個事件都使用不同的類),這使得代碼變得很髒。這就是爲什麼我想把事件處理程序放在一個單獨的類中並將它們添加到按鈕中的原因。
問題是,我不知道是否必須爲每個事件創建不同的類,我認爲這不是很酷。所以我想出了一個主意。在類的handle()
方法中,我檢查哪種類型的事件正在進行並處理它。 這是代碼
主類
public class Main extends Application{
Button button;
PruebaEventHandler evhandler;
public Main() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception{
primaryStage.setTitle("h0i");
button = new Button("Púlsame!");
evhandler = new PruebaEventHandler();
button.addEventHandler(MouseEvent.ANY, evhandler);
StackPane layout = new StackPane();
layout.getChildren().add(button);
Scene scene = new Scene(layout, 300, 250);
primaryStage.setScene(scene);
primaryStage.show();
}
}
EventHandler類
public class PruebaEventHandler implements EventHandler<MouseEvent>{
@Override
public void handle(MouseEvent event){
if(event.getEventType().equals(MouseEvent.MOUSE_PRESSED)){
System.out.printf("Te cogí\n");
}
if(event.getEventType().equals(MouseEvent.MOUSE_RELEASED)){
System.out.printf("\nMe ha soltado!!!");
}
}
}
我不知道這是非常低效的或壞的編程風格,但是是唯一的我到目前爲止已經提出瞭解決方案。所以我想問問你這是一個很好的解決方案,還是如果有更好的解決方案,就把我的光芒放在眼裏!事先感謝。
有什麼不對您的實現。你可以使用一個switch語句,否則,如果哪一個更有效。這個問題可能是主題。 – Sedrick