繁体   English   中英

JavaFX:从数组显示的文本字段,数组更新/按钮单击增加 - 如何强制场景重绘更新的数组

[英]JavaFX: TextFields displayed from array, array updated / increased on button click - how to force the scene to redraw the updated array

我有一个显示动物及其名称的程序:

    private int TOTAL_ANIMALS = 5;

    private TextField[] animals;
    private TextField[] names
public AnimalsApp  {
  animals = new TextField[TOTAL_ANIMALS];
  names = new TextFields[TOTAL_ANIMALS];
  for (int i = 0; i < TOTAL_ANIMALS; i++)  {
    animals[i] = new TextField();
    names[i] = new TextField();
  }
}
@Override
    public void start(Stage primaryStage) {
       GridPane grid = new GridPane();
       ...
       for (int i = 0; i < TOTAL_ANIMALS; i++)  {
         grid.add(animals[i], 0, i);
         grid.add(names[i], 1, i);
       }

Add animal按钮相关的方法:

public void addAnimals()  {
  animals = Arrays.copyOf(animals, TOTAL_ANIMALS + 1);
  names = Arrays.copyOf(names, TOTAL_ANIMALS + 1);

  animals[TOTAL_ANIMALS] = new TextField();
  names[TOTAL_ANIMALS] = new TextField();
  TOTAL_ANIMALS++;

  System.out.println("Animals updated");
}

addAnimals中的代码会执行,但不会出现新的文本字段。 我应该如何解决它?

您忘记将文本字段添加到网格中,仅创建一个文本字段不会显示您需要将其添加到您在开始 function 中所做的那样。 您还需要使 GridPane 成为 class 中的变量。

public void addAnimals()  {
  animals = Arrays.copyOf(animals, TOTAL_ANIMALS + 1);
  names = Arrays.copyOf(names, TOTAL_ANIMALS + 1);

  animals[TOTAL_ANIMALS] = new TextField();
  names[TOTAL_ANIMALS] = new TextField();
  grid.add(animals[TOTAL_ANIMALS], 0, TOTAL_ANIMALS);
  grid.add(names[TOTAL_ANIMALS], 1, TOTAL_ANIMALS);
  TOTAL_ANIMALS++;

  System.out.println("Animals updated");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM