将操作事件处理程序添加到文本字段java fx

时间:2016-01-12 19:26:14

标签: 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.out.println("You clicked me!"):
    }
});

我可以将相同的代码添加到 textField 节点,这样当点击文本字段时,它会触发一堆代码吗?或者你是怎么做到的?

2 个答案:

答案 0 :(得分:2)

要响应鼠标点击,请使用setOnMouseClicked

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);
    }
}

答案 1 :(得分:0)

试试这个:

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");
        }
    }
});