Javafx 2 在JavaFX中以编程方式在文本字段旁边显示消息

Javafx 2 在JavaFX中以编程方式在文本字段旁边显示消息,javafx-2,Javafx 2,我的JavaFX应用程序中有一个TextField。我希望以编程方式在文本的右侧显示消息(如验证消息)。我想使用弹出窗口,并在弹出窗口中设置带有消息的标签。但我不确定如何将其定位到文本字段的右侧。下面是这方面的示例代码。你能帮我做这个吗 public void start(Stage primaryStage) { primaryStage.setTitle("JavaFX Welcome"); GridPane grid = new GridPane();

我的JavaFX应用程序中有一个
TextField
。我希望以编程方式在文本的右侧显示消息(如验证消息)。我想使用
弹出窗口
,并在
弹出窗口
中设置带有消息的
标签
。但我不确定如何将其定位到文本字段的右侧。下面是这方面的示例代码。你能帮我做这个吗

public void start(Stage primaryStage) {
        primaryStage.setTitle("JavaFX Welcome");
        GridPane grid = new GridPane();
        grid.setAlignment(Pos.CENTER);
        grid.setHgap(10);
        grid.setVgap(10);
        grid.setPadding(new Insets(25, 25, 25, 25));

        Text scenetitle = new Text("Welcome");
        scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20));
        grid.add(scenetitle, 0, 0, 2, 1);

        Label userName = new Label("User Name:");
        grid.add(userName, 0, 1);

        TextField userTextField = new TextField();
        grid.add(userTextField, 1, 1);

        Label pw = new Label("Password:");
        grid.add(pw, 0, 2);

        PasswordField pwBox = new PasswordField();
        grid.add(pwBox, 1, 2);


        Label label=new Label();
        label.setText("This is an error message");

        final Text actiontarget = new Text();
        grid.add(actiontarget, 1, 6);


        final Popup popup = new Popup(); 

        popup.getContent().add(label);

        //Want to display this popup to the right of the userTextField.

        Scene scene = new Scene(grid, 300, 275);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

表演完舞台后,你要做什么

    Bounds userTextFieldBounds = userTextField.getBoundsInLocal();
    Point2D popupLocation = userTextField.localToScreen(userTextFieldBounds.getMaxX(), userTextFieldBounds.getMinY());
    popup.show(userTextField, popupLocation.getX(), popupLocation.getY());
Java8中引入了
localToScreen(…)
方法;如果您使用的是早期版本,则需要

    Bounds userTextFieldBounds = userTextField.getBoundsInLocal();
    Point2D popupLocation = userTextField.localToScene(userTextFieldBounds.getMaxX(), userTextFieldBounds.getMinY());
    popup.show(userTextField, 
        popupLocation.getX()+scene.getX()+primaryStage.getX(), 
        popupLocation.getY()+scene.getY()+primaryStage.getY());