java add event handler_java – 在动画的onFinished EventHandler中使用showAndWait不起作用

JavaFx中,我想在动画结束后显示模态对话框.出于某种原因,在动画结束后执行的EventHandler中调用showAndWait不起作用.显示一个新窗口,但似乎内部没有任何内容.

此示例演示了此问题:

public void start(Stage primaryStage) {

Rectangle rect = RectangleBuilder.create().width(200).height(200).fill(Color.RED).build();

StackPane root = new StackPane();

root.getChildren().add(rect);

Timeline animation = new Timeline();

animation.getKeyFrames().addAll(

new KeyFrame(new Duration(1000),

new KeyValue(rect.widthProperty(), 100),

new KeyValue(rect.heightProperty(), 100)),

new KeyFrame(new Duration(2000),

new KeyValue(rect.widthProperty(), 300),

new KeyValue(rect.heightProperty(), 300))

);

animation.setOnFinished(new EventHandler() {

@Override

public void handle(ActionEvent t) {

Stage stage = new Stage();

StackPane pane = new StackPane();

pane.getChildren().add(new Label("Hello world"));

stage.setScene(new Scene(pane, 100, 100));

stage.showAndWait();

}

});

animation.setCycleCount(1);

Scene scene = new Scene(root, 300, 300);

primaryStage.setScene(scene);

primaryStage.show();

animation.play();

}

我想知道为什么这不起作用(在我的Macbook上使用java 1.7.0_51)并获得解决方法的建议.

EventHandlerJava的一个类,用于处理事件。它可以将事件处理程序与事件源分离,从而使代码更加模块化和易于维护。通过使用EventHandler,您可以将事件处理程序添加到事件源,以便在事件发生时自动调用处理程序。这样,您就可以专注于编写事件处理程序,而不必担心如何将其与事件源关联起来。 以下是一个使用EventHandler的简单示例: ```java import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.Button; import java.awt.Frame; import java.awt.Panel; public class EventHandlerExample implements ActionListener { private Button button; public EventHandlerExample() { Frame frame = new Frame("Event Handler Example"); Panel panel = new Panel(); button = new Button("Click me!"); button.addActionListener(this); panel.add(button); frame.add(panel); frame.pack(); frame.setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getSource() == button) { System.out.println("Button clicked!"); } } public static void main(String[] args) { new EventHandlerExample(); } } ``` 在这个例子,我们创建了一个名为EventHandlerExample的类,它实现了ActionListener接口。我们在构造函数创建了一个Frame和一个Panel,并将一个Button添加到Panel。我们还将EventHandlerExample类本身作为ActionListener添加到Button,以便在Button被点击时调用actionPerformed方法。在actionPerformed方法,我们检查事件源是否是我们添加的Button,如果是,就打印一条消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值