将操作事件处理程序添加到文本字段java fx
我在java fx代码中有一个Textfield节点:将操作事件处理程序添加到文本字段java fx,java,javafx,Java,Javafx,我在java fx代码中有一个Textfield节点: TextField Name= new TextField(); 我了解如果单击按钮,如何通过添加事件处理程序触发代码,如下所示: Button getName= new Button("Save"); getName.setOnAction(new EventHandler<ActionEvent>() { public void handle(ActionEvent args) { System.o
TextField Name= new TextField();
我了解如果单击按钮,如何通过添加事件处理程序触发代码,如下所示:
Button getName= new Button("Save");
getName.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent args) {
System.out.println("You clicked me!"):
}
});
Button getName=新建按钮(“保存”);
getName.setOnAction(新的EventHandler(){
公共无效句柄(ActionEvent参数){
System.out.println(“你点击了我!”):
}
});
我是否可以将相同的代码添加到我的textField节点,这样当单击文本字段时,它就会触发一堆代码?或者你是如何做到这一点的?试试这个:
TextField yourTextField = new TextField();
yourTextField.focusedProperty().addListener(new ChangeListener<Boolean>()
{
@Override
public void changed(ObservableValue<? extends Boolean> arg0, Boolean oldPropertyValue, Boolean newPropertyValue)
{
if (newPropertyValue)
{
System.out.println("Textfield on focus");
}
else
{
System.out.println("Textfield out focus");
}
}
});
TextField yourTextField=newtextfield();
yourTextField.focusedProperty().addListener(新的ChangeListener())
{
@凌驾
public void已更改(observeValue要响应鼠标单击,请使用
与仅供参考一样,可以为TextField指定“操作处理程序”,通常在用户键入ENTER键时调用这似乎不是您真正想要的。因此您可以为单击指定它?不,这不是文本字段的onAction
工作方式,因为文本字段onAction
是由回车键触发的,而不是单击。如果您想捕获单击(或触摸)事件,您将需要一个事件筛选器,sry我现在没有时间编写解决方案。好的,谢谢,很高兴继续阅读。这响应文本字段获得焦点,而不是鼠标单击。因此,例如,如果用户使用tab键将焦点放在文本字段上(但从未使用鼠标),您的处理程序将被触发。另一方面,如果文本字段已经有焦点,并且用户单击了它,则不会触发处理程序。我如何将单击事件添加到文本字段中,真正查找itI?我认为文本字段将使用鼠标单击事件,并且不会再次冒泡到onMouseClicked处理程序,因此您需要一个筛选器…bu我想错了:-)控件何时使用事件和何时不使用事件似乎不太一致。IIRC文本控件使用按键事件,但似乎不使用鼠标事件。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class ClickOnTextField extends Application {
@Override
public void start(Stage primaryStage) {
TextField textField = new TextField();
textField.setOnMouseClicked(e -> {
System.out.println("Clicked");
});
StackPane root = new StackPane(textField);
Scene scene = new Scene(root, 350, 120);
primaryStage.setScene(scene);;
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}