gpt4 book ai didi

event-handling - 是否可以使用 addEventHandler 方法将 ActionEvent 处理程序添加到 javaFX 文本字段?

转载 作者:行者123 更新时间:2023-12-02 05:10:50 29 4
gpt4 key购买 nike

我尝试使用 addEventHandler() 将操作处理程序添加到文本字段,但似乎不起作用。有可能吗?这是一个错误吗?如果我尝试使用 Button 控件进行相同的操作,一切都会很好。

这里是示例代码:

package com.teste;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class EventHandlerTest extends Application {

@Override
public void start(Stage stage) throws Exception {
// TODO Auto-generated method stub
stage.setTitle("Custom JavaFX Event");
TextField btn = new TextField();
btn.setId("Fire Button");
btn.setText("Fire MyEvent'");

btn.addEventHandler(ActionEvent.ACTION, new EventHandler<ActionEvent>() {

@Override
public void handle(ActionEvent event) {

if (event.getEventType().equals(ActionEvent.ACTION)) {
System.out.println("ActionEvent 2");
}
}
});

StackPane root = new StackPane();
root.getChildren().add(btn);
stage.setScene(new Scene(root, 300, 250));
stage.show();
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
launch(args);
}

}

文档说这应该是可能的,但找不到其他任何内容。有什么想法吗?

最佳答案

如果您使用setOnAction而不是addEventHandler ,然后您将能够捕获 TextField 的 ActionEvent。

btn.setOnAction(new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent event) {
System.out.println("ActionEvent: " + event);
}
});

我不知道为什么addEventHandler代码没有捕获事件。我也尝试了 addEventFilter ,但这对我来说也不起作用(JavaFX 2.2)。

请注意,当您在 TextField 上按 Enter 键时,TextField 将生成 ActionEvent。

关于event-handling - 是否可以使用 addEventHandler 方法将 ActionEvent 处理程序添加到 javaFX 文本字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12149898/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com