- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下代码允许在两个场景之间切换。
import javafx.application.*;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.layout.*;
import javafx.scene.control.*;
public class EventHandlersExample extends Application {
Stage window;
Scene scene1, scene2;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
window = primaryStage;
//Button 1
Label label1 = new Label("Welcome to the first scene!");
Button button1 = new Button("Go to scene 2");
button1.setOnAction(e -> window.setScene(scene2));
//Textfield
TextField tf1 = new TextField();
//Layout 1 - children laid out in vertical column
VBox layout1 = new VBox(20);
layout1.getChildren().addAll(label1, button1);
scene1 = new Scene(layout1, 200, 200);
//Button 2
Button button2 = new Button("Go back to scene 1");
button2.setOnAction(e -> window.setScene(scene1));
//Layout 2
StackPane layout2 = new StackPane();
layout2.getChildren().add(button2);
scene2 = new Scene(layout2, 600, 300);
//Display scene 1 at first
window.setScene(scene1);
window.show();
}
}
但是,我宁愿在单独的类中看到我的 EventHandler,如下所示:
import javafx.application.*;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.layout.*;
import javafx.scene.control.*;
public class EventHandlersExample extends Application {
Stage window;
Scene scene1, scene2;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
window = primaryStage;
//Button 1
Label label1 = new Label("Welcome to the first scene!");
Button button1 = new Button("Go to scene 2");
//button1.setOnAction(e -> window.setScene(scene2));
Button1Handler button1handler = new Button1Handler();
button1.setOnAction(button1handler);
//Textfield
TextField tf1 = new TextField();
//Layout 1 - children laid out in vertical column
VBox layout1 = new VBox(20);
layout1.getChildren().addAll(label1, button1);
scene1 = new Scene(layout1, 200, 200);
//Button 2
Button button2 = new Button("Go back to scene 1");
button2.setOnAction(e -> window.setScene(scene1));
//Layout 2
StackPane layout2 = new StackPane();
layout2.getChildren().add(button2);
scene2 = new Scene(layout2, 600, 300);
//Display scene 1 at first
window.setScene(scene1);
window.show();
}
}
class Button1Handler implements EventHandler<ActionEvent> {
@Override
public void handle (ActionEvent e) {
System.out.println("OK button clicked");
window.setScene(scene2);
}
}
但是,在 EventHandlersExample
类中对窗口的引用不起作用。
当我尝试从 EventHandlersExample
-Class 中的文本字段执行 textfield.getText()
时,(当然)会发生同样的问题。
我该如何解决这个问题?---非常感谢您的帮助。
最佳答案
如果您将事件处理逻辑封装在单独的类中,则需要以某种方式将父窗口和场景的引用传递给处理程序。执行此操作的一种便捷方法是通过构造函数注入(inject)依赖项:
class Button1Handler implements EventHandler<ActionEvent> {
private final Stage window;
private final Scene scene;
public Button1Handler (Stage window, Scene scene) {
this.window = window;
this.scene = scene;
}
@Override
public void handle (ActionEvent e) {
System.out.println("OK button clicked");
window.setScene(scene);
}
}
然后,您可以使用 new Button1Handler(window, scene2)
创建处理程序。
关于java - EventHandler 在一个单独的类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51534680/
我想问一下EventHandler之间的区别和 EventHandler . 之前我实现了一个 EventHandler ,带有自定义 EventArgs,可以从用户控件传递到父页面。 我想我需要申请
在C#中使用和使用有根本区别吗 event EventHandler和 EventHandler因为它们都产生与我所看到的相同的效果,除了使用 event 关键字会在智能感知中为您提供不同的图标。 最
我向事件添加了一个方法,但现在想在某些情况下从这些事件上删除该方法: public MyClassConstructor() { otherClassObj.OnMyDataReceived
我向事件添加了一个方法,但现在想在某些情况下从这些事件上删除该方法: public MyClassConstructor() { otherClassObj.OnMyDataReceived
最近一直在想这段代码有没有什么显着的区别: public event EventHandler SomeEvent; 还有这个: public delegate void MyEventHandler
假设你有这样的方法 private void FireEvent(EventHandler eventHandler, T eventArgs, string name) { var hand
我正在使用 GWT MVP 来开发应用程序。我看到 GWT MVP 代码中可以有两种事件处理程序,但我不太确定应该在哪个地方使用哪种事件处理程序: 1) AppController 中的 Handle
我看到一些代码使用 -= new EventHandler(anEvent) ,你能告诉我与 ' += new EventHandler' 有什么不同吗? 谢谢 最佳答案 一个将委托(delegate
我遇到了这样的 jQuery 片段: selector.eventHandler(...some code...).eventHandler(...some code...); 它有什么作用? 最佳答
我试图在指定时间内淡出一个文本框。此代码适用于 Windows Phone,但不适用于 Windows 8 应用程序。我进行了更改以修复尽可能多的错误。但我无法解决其中一个问题:cannot impl
我正在尝试在 Windows Phone 应用程序中实现一个计时器。它在 Windows Phone 应用程序 (Silverlight) 中工作正常,但它在 Windows Phone 空白应用程序
两者有什么区别? object.ProgressChanged += new EventHandler(object_ProgressChanged) object.ProgressChanged +
我已经阅读了一些关于此的主题,但我仍然不知道如何解决我的问题。我来自 Java,大部分是 C# 的新手 我想在动画结束时附加监听器: myStoryBoard.Completed += new Eve
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Can I customize automatic event handler generation in
我正在使用 axon 2.3.1 ,我有一个聚合类 public class MyAggregate extends AbstractAnnotatedAggregateRoot { @Aggre
我将 C# 与 Xamarin 结合使用,在使用 EventHandler 时出现此错误: The type or namespace name 'EventHandler' could not be
我正在阅读有关 EventHandlers 的 .NET 文档,但不理解来自 https://learn.microsoft.com/en-us/dotnet/standard/events/ 的这段
我的目的是重用从 ComboBox 类继承的 SelectedValueChanged 事件(该事件又从 ListControl 类继承) 在下面的代码中:SelectedValueChanged 标
以下代码允许在两个场景之间切换。 import javafx.application.*; import javafx.event.ActionEvent; import javafx.event.E
我有一个作业,其中我应该创建一个应用程序,将货币从卡塔尔里亚尔转换为 3 种选择之一(美元、欧元或英镑)。 我想成为一个酷男孩,并为我的应用程序提供了背景、标题和图标。但这还不够,我还决定不使用提交按
我是一名优秀的程序员,十分优秀!