-1

So im trying to create Action event, to change the text on my status label button, but i keep getting the error listed in the title "The controller 'MainController' has no event slot 'PassPhrase", Im new to this and not quite sure exactly what to do.

Also I want the text entered into my passPhrase field to be saved under a variable called pass, which i think i did correctly if anyone could double check? Thanks.

This is my mainController

package application;

import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;

import javafx.fxml.FXML;

public class MainController {
@FXML
private Label lblStatus;


@FXML
private TextField txtPassPhrase;


String pass = txtPassPhrase.getText();

public void PassPhrase (ActionEvent event) {
    if (txtPassPhrase.getText().isEmpty()) {
        lblStatus.setText("You must Enter in Characters");
    } else {
        lblStatus.setText("Your PassPhrase has been accepted.");


    }
    }
}

Here is my passPhrase FXML

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>

<fx:root prefHeight="150.0" prefWidth="500.0" type="AnchorPane" 
xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" 
fx:controller="application.MainController">
   <children>
      <Button layoutX="210.0" layoutY="103.0" mnemonicParsing="false" 
onAction="#PassPhrase" text="Submit">
         <font>
            <Font size="18.0" />
         </font>
      </Button>
      <TextField fx:id="txtPassPhrase" layoutX="152.0" layoutY="56.0" 
prefHeight="39.0" prefWidth="199.0" promptText="Enter in a PassPhrase">
         <font>
            <Font size="18.0" />
         </font>
      </TextField>
      <Label fx:id="lblStatus" layoutX="80.0" layoutY="14.0" 
 prefHeight="17.0" prefWidth="423.0" text="Press submit once you enter in a 
PassPhrase" textFill="#e05858">
         <font>
            <Font size="18.0" />
         </font>
      </Label>
   </children>
</fx:root>

and my main class

    package application;

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


public class Main extends Application {
@Override
public void start(Stage primaryStage) {
    try {

        Parent root = 
FXMLLoader.load(getClass().getResource("/application/passPhrase.fxml"));
        Scene scene = new Scene(root,400,400);




 scene.getStylesheets().add(getClass().getResource("application.css")
.toExternalForm());
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

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

1 Answers1

0

Try changing your imports to `JavaFX' imports.

import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.event.ActionEvent;
SedJ601
  • 12,173
  • 3
  • 41
  • 59