为什么我的 Java 文本框只保存估算数组的最后一个数字? (我正在使用 JFrame Form 作为 GUI)

问题描述 投票:0回答:2

我尝试获取一个文本框来显示数组,但据我尝试,它只显示数组的最后一个数字

例如:数组给出:1, 24, 18, 98, 100, 78, 63, 24, 77, 46

文本框显示:46

输出显示:

1

24

18

98

100

78

63

24

77

46

我想知道是否有办法让我的文本框显示整个数组?

这是我的代码:

    private void btnStartProgramActionPerformed(java.awt.event.ActionEvent evt) {                                                

        int [] numbers = new int [10];
//declares an array that stores 10 integers

        for (int i=0; i<=9; i=i+1) 
/* as long as i is less than or equal to 9 increase i by one and carry out the operations in the curly brackets */

        { 

                numbers[i] = 1 + (int)(Math.random() * ((100 - 1) + 1));
// makes a random integer that is <= 1 but >=100

            lblArray.setText(String.valueOf(numbers[i]));
// prints only the last number in the array (lblArray is a jLabel)
           
            System.out.println(numbers[i]);
// prints all 10 numbers in the array
        }     
  
    }

我尝试使用其他文本容器,例如文本字段和文本区域,但没有成功。我也尝试过用谷歌搜索我的问题,但我要么不理解他们的解决方案,要么不起作用。我是初学者,所以如果我犯了任何大错误,我会虚心接受建议。

java arrays user-interface textbox jframe
2个回答
3
投票

setText()
设置标签的值。它不会附加到当前内容,而是完全替换它。如果要保留标签以前的内容,则必须获取它(通过
getText()
或标签提供的其他访问器方法),将其与数组的当前元素连接起来,并将其用作新文本标签的。


2
投票

问题是,每次循环时,您都将标签的文本 (lblArray) 设置为当前数字,因此仅显示数组中的最后一个数字。要显示整个数组,您可以将所有值累积到一个字符串中,然后在循环结束后设置标签文本。

仅举一个例子

    private void btnStartProgramActionPerformed(java.awt.event.ActionEvent evt) {                                                
    int[] numbers = new int[10]; integers
    StringBuilder allNumbers = new StringBuilder(); 

    for (int i = 0; i < numbers.length; i++) {
        numbers[i] = 1 + (int) (Math.random() * 100); 
        allNumbers.append(numbers[i]).append(", "); 
        System.out.println(numbers[i]); 
    }

    // Remove the last comma and space for a cleaner look
    if (allNumbers.length() > 0) {
        allNumbers.setLength(allNumbers.length() - 2);
    }

    lblArray.setText(allNumbers.toString()); // Display the entire array in the label
}
© www.soinside.com 2019 - 2024. All rights reserved.