2017-05-04 1 views
0

Je tente de créer un événement pour le bouton qui capture le texte entré dans les champs TextField et PasswordField. Je sais que cela a quelque chose à voir avec la gestion des événements, mais je ne sais pas comment l'implémenter. Vous verrez dans mon code la classe avec laquelle j'ai commencé, appelée AddHandler. J'essaye également de construire une chaîne qui accueillera et inclura l'utilisateur et passera dans le contrôle d'étiquette de salutation dans la nouvelle étiquette qui est marquée vide (la position 4 de mon volet).Gestion d'événements JavaFX, comme la capture de texte à partir du contrôle de champ de texte

import javafx.application.Application; 
import javafx.geometry.HPos; 
import javafx.geometry.Insets; 
import javafx.geometry.Pos; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.control.Label; 
import javafx.scene.text.Text; 
import javafx.scene.control.TextField; 
import javafx.scene.layout.GridPane; 
import javafx.stage.Stage; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 

public class UserAndPass extends Application { 
    @Override // Override the start method in the Application class 
    public void start(Stage primaryStage) { 
    // Create a pane and set its properties 
    GridPane pane = new GridPane(); 
    pane.setAlignment(Pos.CENTER); 
    pane.setPadding(new Insets(11.5, 12.5, 13.5, 14.5)); 
    pane.setHgap(5.5); 
    pane.setVgap(5.5); 

    // Place nodes in the pane 
    pane.add(new Label("Please enter your username and password: "), 0, 0); 
    pane.add(new Label("Username: "), 0, 1); 
    pane.add(new TextField(), 1, 1); 
    pane.add(new Label("Password: "), 0, 2); 
    pane.add(new TextField(), 1, 2); 
    Button btAdd = new Button("Enter"); 
    pane.add(btAdd, 1, 3); 
    // Create and register the handler 
    btAdd.setOnAction(new AddHandler()); 
    GridPane.setHalignment(btAdd, HPos.RIGHT); 
    pane.add(new Label(""), 0, 4); 

    // Create a scene and place it in the stage 
    Scene scene = new Scene(pane); 
    primaryStage.setTitle("Login Display"); // Set the stage title 
    primaryStage.setScene(scene); // Place the scene in the stage 
    primaryStage.show(); // Display the stage 
    } 

    class AddHandler implements EventHandler<ActionEvent> { 
     @Override // Override the handle method 
     public void handle(ActionEvent e) { 
      AddHandler.enter(); 
     } 
    } 

    /** 
    * The main method is only needed for the IDE with limited 
    * JavaFX support. Not needed for running from the command line. 
    */ 
    public static void main(String[] args) { 
    launch(args); 
    } 
} 

Répondre

0

EDIT: Désolé je mal lu, vous devez créer les champs d'abord comme @ monolith52 allready dit

Button randomButton = new Button("Click Me"); 

que vous pouvez utiliser des expressions Lambda pour faire w Chapeau que tu veux.

Ici en tant que ligne unique: randomButton .setOnAction (e ->Faites ici ce que vous voulez);

Et comme multi-ligne:

randomButton .setOnAction(e -> { 

*Do here what you want* 

}); 

Ensuite, vous simplement devez obtenir les chaînes de vos champs avec:

userNameField.getText() 

et

passwordField.getText() 
1

Pour accéder aux champs de texte et à l'étiquette de votre gestionnaire, créez-les.

public class InnerClasssTest extends Application { 

    private TextField usernameField = new TextField(); 
    private TextField passwordField = new TextField(); 
    private Label greetingLabel = new Label(""); 

pane.add(new Label("Please enter your username and password: "), 0, 0); 
    pane.add(new Label("Username: "), 0, 1); 
    pane.add(usernameField, 1, 1); 
    pane.add(new Label("Password: "), 0, 2); 
    pane.add(passwordField, 1, 2); 
    Button btAdd = new Button("Enter"); 
    pane.add(btAdd, 1, 3); 
    // Create and register the handler 
    btAdd.setOnAction(new AddHandler()); 
    GridPane.setHalignment(btAdd, HPos.RIGHT); 
    pane.add(greetingLabel, 0, 4); 

class AddHandler implements EventHandler<ActionEvent> { 
    @Override // Override the handle method 
    public void handle(ActionEvent e) { 
     greetingLabel.setText(String.format(
       "Hello %[email protected]%s.", usernameField.getText(), passwordField.getText())); 
    } 
} 
+0

Merci beaucoup! –