初学者Java Netbeans:如何在jlabel中显示for循环?

时间:2013-11-14 02:44:19

标签: java netbeans for-loop jlabel

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

    // 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我试图将文本设置为Output,只显示9.我知道他可能很愚蠢但是嘿,我是初学者。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分: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());

将输出类似......

的内容

labels in a row

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

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());

将输出类似......

的内容

labels per line

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

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");
}

将输出类似......

的内容

enter image description here

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

答案 1 :(得分: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");
}

答案 2 :(得分:0)

String nums = "";

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

label.setText(nums);

每次迭代都要继续添加String,然后将最终文本设置为标签。

答案 3 :(得分: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);