JavaFX从文本字段获取输入

时间:2017-01-31 18:37:51

标签: java

我刚刚开始学习java fx,我试图从两个文本字段获取用户输入。点击按钮后,它将显示在控制台上。 但是,我一直在收到错误,无法弄清楚原因。 我已经分配了'手柄'使用Scenebuilder的函数,错误指向方法。

主类:

package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

@Override
public void start(Stage primaryStage) throws Exception{
    Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
    primaryStage.setTitle("Hello World");
    primaryStage.setScene(new Scene(root, 300, 275));
    primaryStage.show();
}


public static void main(String[] args) {
    launch(args);
}
}

控制器:

package sample;

import javafx.event.ActionEvent;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;

public class Controller {
public TextField userField;
public TextField passField;
public Button logButton;

public void handle(ActionEvent event) {
    String username = userField.getText();
    String passw = passField.getText();
    System.out.printf("Logged in as %s %s", username, passw);

}

}

2 个答案:

答案 0 :(得分:1)

虽然您没有显示错误,但我认为这是因为您没有使用userField注释对字段passwordField@FXML进行注释

通过此注释,您可以将控制器中的字段与fxml

中的字段绑定

所以要解决这个问题,让我们做以下简单的步骤

public class Controller implements Initializable{

@FXML
private TextField userField;
@FXML
private TextField passField;
@FXML
private Button logButton;

private void handle(ActionEvent event)
{
    System.out.println(userField.getText());
}

@Override
public void initialize(URL url, ResourceBundle rb)
{
    logButton.setOnAction(this::handle);
}}

并在场景构建器中按照此图像scene builder image

试试这个,如果你还有问题,请发表评论(:

答案 1 :(得分:0)

在使用Scene Builder时,应使用样本控制器骨架:在“视图”下,选择“使用样本控制器骨架”。另外,为文本字段指定“On Action”。场景生成器将点缀我并为你穿越t。