我目前正在一个项目中,我正在尝试实现一个接受用户输入(名称,等级,餐厅名称)的socket.on('disconnect', () => {
// reconnect
})
。下面,我提供了我的Controller类中已经存在的代码。我遇到的问题是,每当我在文本字段中键入任何内容并单击“提交”按钮时,它绝对不会执行任何操作。可能是什么问题?
这是代码的开头和结尾,我没有包括其余部分,因为Login方法是唯一一种在尝试初始化时给我带来麻烦的方法。
TableView
这是特定表视图的FXML代码
public class MainController{
@FXML
private Label lblStatus;
@FXML
private TextField txtUsername;
@FXML
private TextField txtPassword;
/*This method allows user login and when login is successful then user is taken to the main screen.*/
public void Login (ActionEvent event) throws Exception {
if (txtUsername.getText().equals("user") && txtPassword.getText().equals("pass")) {
lblStatus.setText("Login Success");
Stage primaryStage = new Stage();
Parent root = FXMLLoader.load(getClass().getResource("/application/RestScene.fxml"));
Scene scene = new Scene(root,400,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setTitle("Restaurant Advisor");
primaryStage.setScene(scene);
primaryStage.show();
}
else
{
lblStatus.setText("Login Failed");
}
}
public TableView<Table> tableview;
public TableColumn<Table, String> colName;
public TableColumn<Table, Integer> colRating;
public TableColumn<Table, String>colRestaurants;
public TextField txtFieldName;
public TextField txtFieldRating;
public TextField txtFieldRestaurant;
public void initialize(URL location, ResourceBundle resources) {
colName.setCellValueFactory(new PropertyValueFactory<>("TableName"));
colRating.setCellValueFactory(new PropertyValueFactory<>("TableRating"));
colRestaurants.setCellValueFactory(new PropertyValueFactory<>("TableRestaurants"));
tableview.setItems(observableList);
}
ObservableList<Table> observableList = FXCollections.observableArrayList(new Table ("Test", 1, "makiyaki"));
public void buttonSubmit(ActionEvent event) {
Table table = new Table (txtFieldName.getText(), Integer.parseInt(txtFieldRating.getText()), txtFieldRestaurant.getText());
tableview.getItems().add(table);
}
答案 0 :(得分:1)
您尚未将fx:id
插入fxml的表列中。它会在您运行的initalize()
中立即引起NullPointerException,从您所说的当您单击提交时就什么也没有发生,这意味着应用程序在第一个未调用initialize()
地点。
您的initialize()
必须是no-arg方法,才能被调用。 See here,否则,如果您想按照自己的方式进行操作,即initialize(URL, ResourceBundle)
使您的控制器实现上述Initializable
接口
答案 1 :(得分:-1)
您在buttonSubmit
方法上缺少@FXML标记