0

我看过这个网站,没有什么能真正回答我的问题。这就是我的代码的样子:

    // declare user input variables
    int min, max;

    //assign user input to min and max
    min = Integer.parseInt(Min.getText ());
    max = Integer.parseInt(Max.getText ());

    //use for loop to display the values
    for (int n = min; n<= max; n++){
        System.out.println(Integer.toString(n));
        Output.setText(Integer.toString(n));
    }

并且 System.out.println () 产生正确的答案。例如,用户输入 2 和 9,它会说:

run:
2
3
4
5
6
7
8
9

但是我试图将文本设置为输出的 jLabel 仅显示 9。我知道他的可能非常简单,但是嘿,我是初学者。任何帮助,将不胜感激。

4

4 回答 4

2

答案“取决于”。

您希望每个数字在新行上还是附加到String. 您是否希望它们像计数器一样单独显示?

如果你想按顺序显示数字,那么你可以使用这样的东西......

JLabel label = new JLabel();
int min = 0;
int max = 10;
StringBuilder sb = new StringBuilder(128);
for (int n = min; n <= max; n++) {
    sb.append(n);
}
label.setText(sb.toString());

这将输出类似...

连续的标签

或者,如果您想要新行的每个数字,您可以使用...

JLabel label = new JLabel();
int min = 0;
int max = 10;
StringBuilder sb = new StringBuilder(128);
sb.append("<html>");
for (int n = min; n <= max; n++) {
    System.out.println(Integer.toString(n));
    sb.append(n).append("<br>");
}
sb.append("</html>");
label.setText(sb.toString());

这将输出类似...

每行标签

JTextArea现在,如果你想要这个,使用 a并简单地将每个数字附加到它实际上会更容易......

JTextArea editor = new JTextArea(10, 10);
editor.setEditable(false);
int min = 0;
int max = 10;
StringBuilder sb = new StringBuilder(128);
for (int n = min; n <= max; n++) {
    editor.append(Integer.toString(n) + "\n");
}

这将输出类似...

在此处输入图像描述

现在,如果你想为它制作动画,你需要做一些不同的事情,要么使用 ajavax.swing.TimerSwingWorker

于 2013-11-14T03:02:18.967 回答
0

每次调用时System.out.println,它都会将您提供给 STDOUT 的字符串写入(也就是您的终端)。但是,每次调用时Output.setText,它都会替换您设置的最后一个字符串。

解决方案是创建一个包含所有单独数字连接的字符串,然后将该字符串发送到Output.setText.

要在 Java 中的循环中创建字符串,您可以这样做

// Create string "0\n1\n2\n3..."
String s = "";
for (int i=0; i<10; i++) {
    s += i + "\n";
}

或者,有一个内置于 Java 的类称为StringBuilder,它在关注效率的情况下是首选的。使用+是非常浪费的,因为它创建了许多必须被垃圾收集的中间对象。

StringBuilder s = new StringBuilder();
for (int i=0; i<10; i++) {
    s.append(i);
    s.append("\n");
}
于 2013-11-14T02:50:47.183 回答
0
String nums = "";

for (..........) {
    nums += yourResult + " ";  // this will give a space separating your output
}

label.setText(nums);

每次迭代都继续添加到字符串,然后将最终文本设置为标签。

于 2013-11-14T02:52:14.447 回答
0

这是我通常会做的:

String vals = "";
int min = Integer.parseInt(Min.getText ());
int max = Integer.parseInt(Max.getText ());

for (int i = min; i <= max; i++)
    vals = vals + Integer.toString(i) + " ";

output.setText(vals);
于 2015-08-09T23:37:03.377 回答