当前位置: 首页 > 知识库问答 >
问题:

Javafx:如何使用按钮和文本字段打印标签中的数组字符串?

拓拔曦
2023-03-14

我正在使用IntelliJIdea。我想显示我在Textfield中提交的所有数字。所以我创建了一个ArrayList来将我提交的所有数字放在那里。但是,每次我按下按钮时,它都不会添加所有列表,而是只添加我提交的1个数字。如何显示我在Textfield中提交的所有数字并使用标签显示它。我使用的是单独的fxml。

在此输入图像描述

样品fxml:

<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.GridPane?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.layout.VBox?>
<GridPane fx:controller="com.binarySearch.Controller"
          xmlns:fx="http://javafx.com/fxml" alignment="TOP_LEFT" hgap="10" vgap="10">

    <Label text="Please enter number" GridPane.rowIndex="0" GridPane.columnIndex="0"/>
    <TextField  fx:id="inputNumber" GridPane.rowIndex="1" GridPane.columnIndex="0" />
    <Button text="Submit" fx:id="submit" GridPane.rowIndex="2" GridPane.columnIndex="0" onAction="#handleSubmitPress"/>
    <Button text="Search" fx:id="search" GridPane.rowIndex="3" GridPane.columnIndex="0" onAction="#handleSearchPress" />
    <Label text="You input: " GridPane.rowIndex="4" GridPane.columnIndex="0" />
    <VBox GridPane.rowIndex="5" GridPane.columnIndex="0" >
        <Label fx:id="display" />
    </VBox>

</GridPane>

Controller.java

package com.binarySearch;

import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyEvent;

import java.util.ArrayList;
import java.util.List;

public class Controller {
    @FXML
    private TextField inputNumber;

    @FXML
    private Button submit;

    @FXML
    private Button search;

    @FXML
    private Label display;

    public void handleSubmitPress() {
        List<Integer> list = new ArrayList<>();
        int num = Integer.parseInt(inputNumber.getText());
        list.add(num);

        for(int x=0; x<list.size();x++) {
            display.setText(list.get(x).toString());
        }
    }

}

共有1个答案

王君墨
2023-03-14

您可以在方法本身中创建一个新列表。此列表最初为空,因此在添加文本后,它包含单个元素。此外,使用setText替换标签的文本。它不指定作为文本传递的字符串的组合;它也不会添加更多标签。

将列表声明为字段可以解决第一个问题,但解决第二个问题的最佳方法可能是在VBox中添加一个新的标签,这样就不必跟踪列表中的数据:

private final List<Integer> list = new ArrayList<>();
@FXML
private VBox vbox;

public void handleSubmitPress() {
    int num = Integer.parseInt(inputNumber.getText());
    list.add(num);

    vbox.getChildren().add(new Label(Integer.toString(num)));
}
xml prettyprint-override">    <VBox GridPane.rowIndex="5" GridPane.columnIndex="0" fx:id="vbox" />
 类似资料:
  • 在这里,我试图在数组中创建文本字段和标签,并将它们添加到网格窗格中,但在注释行和以后的行中会遇到问题。

  • 问题内容: 要在Python中打印字符串和数字,除了做类似的事情外,还有其他方法: 问题答案: 在 不带括号的情况下 使用 print函数 可用于旧版本的Python,但 Python3不再支持该功能 ,因此您必须将参数放在括号内。但是,有一些变通方法,如对该问题的答案所述。由于对Python2的支持已于2020年1月1日结束,因此 答案已修改为与Python3兼容 。 您可以执行以下任一操作(并

  • 在我试图制作的一个程序中,有三个文本字段和几个按钮(每个按钮代表一个数字)。我正在尝试获取它,这样你就可以通过点击按钮(而不是键盘)来打字了。到目前为止,我得到了这个: 在搜索互联网后,我发现了以下代码: 唯一的问题是,我不知道如何使用我找到的代码(我找到的代码是第二个块)。 我从哪里得到密码的。

  • 我在寻找一种方法来放弃我的程序中的一个getter。我有一堆动态创建的文本字段: 下面是getter,我想在这里返回聚焦的TextField 处理程序将接收聚焦字段并调用我的“model”-class中的checkInput()方法。 此刻,它接收到一个由我自己设置的预定义字段。检查答案的代码有效。感谢任何帮助我的人,如果我自己找到了一个方法,我一定会把它贴在这里。

  • 如何使窗格(内部包含元素)可滚动? 在FXML文件中,我放了一个ScrollPane,我希望它是可滚动的窗格。正确吗?还是我错了? 滚动ane.set内容(窗格);

  • 我试图限制可以插入JavaFX-8文本字段的字符数:当达到限制时,调用endlinereach()方法。我想根据文本字段的大小(GUI上的可见部分)设置最大字符数。所以我使用的代码是 问题是textfield.getPrefClonCount()无法正常工作。此外,我无法以编程方式设置prefClonCount值,因为每次重新启动程序(而不是在执行期间)时,文本字段的宽度都会发生变化。文本字段是J