如何在 javafx 上使用 setOnAction 事件
How to use setOnAction event on javafx
我想验证文本字段是否为空或不使用 javafx。
我对事件处理程序感到困惑。我想确认:
- 是否有多种使用setOnAction的方法:
submit.setOnAction((new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
System.out.println("Hello World");
}
}));
或
submit.setOnAction(e -> handle(e));
这两个选择有什么区别?
- 第二选择是否可以不使用ActionEvent
submit.setOnAction(e -> handle());
但是定义 e 的目的是什么?
我想验证我的应用程序中的文本字段。
public class AppGUI extends Application{
public static void main(String[] args)
{
launch();
}
public void start(Stage topView)
{
createUI(topView);
}
private void createUI(Stage topView)
{
TextField name = TextField();
Button submit = new Button("Submit");
submit.setOnAction(e -> validate());
}
private boolean validate()
{
// if textfield is empty, return false. else, return true.
}
我在这里迷路了。 setOnAction中的e不用validate可以吗?如何将文本字段的值传递给 validate()?使文本字段成为私有变量是唯一的方法吗? (因为我有很多文本字段,所以我想知道它是否是一个不错的选择)。
在 createUI 方法中,我怎么说如果 validate() returns false,显示错误消息,如果 true,做其他事情?
谢谢,抱歉打扰了
what is the difference between these two choices?
在第二个选项中使用 lambdas(从 Java 8 开始出现)
but then what is the purpose of defining e?
对于按钮,您的方法具有这样的签名 setOnAction(EventHandler<ActionEvent> handler)
您应该看到 EventHandler tutorials and an ActionEvent javadoc。例如,从 e 您可以通过这种方式获取事件最初发生的对象 e.getSource()
验证时不用e也可以。
要传递文本字段的值,您的方法应该具有这样的签名
boolean validate(String text);
代码示例:
private void createUI(Stage topView){
TextField name = TextField();
Button submit = new Button("Submit");
submit.setOnAction(e -> {
boolean validated = validate(name.getText());
if(validated) System.out.println("validated");
}
}
private boolean validate(String text){
return text != null && !text.isEmpty();
}
我想验证文本字段是否为空或不使用 javafx。
我对事件处理程序感到困惑。我想确认: - 是否有多种使用setOnAction的方法:
submit.setOnAction((new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
System.out.println("Hello World");
}
}));
或
submit.setOnAction(e -> handle(e));
这两个选择有什么区别?
- 第二选择是否可以不使用ActionEvent submit.setOnAction(e -> handle()); 但是定义 e 的目的是什么?
我想验证我的应用程序中的文本字段。
public class AppGUI extends Application{
public static void main(String[] args)
{
launch();
}
public void start(Stage topView)
{
createUI(topView);
}
private void createUI(Stage topView)
{
TextField name = TextField();
Button submit = new Button("Submit");
submit.setOnAction(e -> validate());
}
private boolean validate()
{
// if textfield is empty, return false. else, return true.
}
我在这里迷路了。 setOnAction中的e不用validate可以吗?如何将文本字段的值传递给 validate()?使文本字段成为私有变量是唯一的方法吗? (因为我有很多文本字段,所以我想知道它是否是一个不错的选择)。 在 createUI 方法中,我怎么说如果 validate() returns false,显示错误消息,如果 true,做其他事情? 谢谢,抱歉打扰了
what is the difference between these two choices?
在第二个选项中使用 lambdas(从 Java 8 开始出现)
but then what is the purpose of defining e?
对于按钮,您的方法具有这样的签名 setOnAction(EventHandler<ActionEvent> handler)
您应该看到 EventHandler tutorials and an ActionEvent javadoc。例如,从 e 您可以通过这种方式获取事件最初发生的对象 e.getSource()
验证时不用e也可以。
要传递文本字段的值,您的方法应该具有这样的签名
boolean validate(String text);
代码示例:
private void createUI(Stage topView){
TextField name = TextField();
Button submit = new Button("Submit");
submit.setOnAction(e -> {
boolean validated = validate(name.getText());
if(validated) System.out.println("validated");
}
}
private boolean validate(String text){
return text != null && !text.isEmpty();
}