Как я могу сделать для l oop, который будет отображать 8 TextFields в javaFx - PullRequest
0 голосов
/ 03 марта 2020

Это код, который у меня есть до сих пор ...

int nums = 8;
for (int j = 0; j < nums; j++) {
   TextField test = new TextField();
   test.setAlignment(Pos.CENTER);
}
this.getChildren().add(test);

Я пытался сделать что-то вроде TextField 'test' + j = new TextField (); так что это создаст test1, test2, test3 и т. д. но это дало синтаксические ошибки. Не совсем уверен, как бы я go об этом по-другому.

Ответы [ 3 ]

3 голосов
/ 03 марта 2020

Вы должны переместиться this.getChildren().add(test); в for -l oop:

int nums = 8;
for (int j = 0; j < nums; j++) {
   TextField test = new TextField();
   test.setAlignment(Pos.CENTER);
   this.getChildren().add(test);
}
2 голосов
/ 04 марта 2020

Добавьте их к чему-то, что позволяет им укладывать вертикально. Также убедитесь, что ваш звонок для их добавления находится внутри l oop, где test все еще находится в области видимости.

VBox box = new VBox(5);
int nums = 8;
for (int j = 0; j < nums; j++) {
   TextField test = new TextField();
   test.setAlignment(Pos.CENTER);
   box.getChildren().add(test);
}
this.getChildren().add(box);
0 голосов
/ 04 марта 2020

@ Ответ Дастина Р великолепен. Я просто добавляю больше. Как, например, любое событие на каждом TextField создан.

import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class TestingGroundsTwo extends Application
{
    public static void main(String[] args)
    {
        launch(args);
    }

    @Override
    public void start(Stage stage)
    {
        VBox root = new VBox();

        for (int i = 0; i < 8; i++) {
            TextField tempTextField = new TextField();//Create the TextField.
            final int t = i;
            tempTextField.setPromptText("I am TextField " + t);//Set prompt text to easily identify TextField
            //Create key handlding event on the TextField
            tempTextField.setOnKeyReleased((event) -> {
                System.out.println("You typed " + event.getCode() + " in TextField " + t + ". My text value is " + tempTextField.getText());
            });
            root.getChildren().add(tempTextField);//Add the TextField to a parent node. In this case VBox.
        }

        Platform.runLater(() -> root.requestFocus());
        stage.setTitle("Hello World!");
        Scene scene = new Scene(root, 750, 600);
        scene.setFill(Color.GHOSTWHITE);
        stage.setScene(scene);
        stage.show();
    }
}
...