我看过这个网站,没有什么能真正回答我的问题。这就是我的代码:
// 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.我知道他可能很愚蠢但是嘿,我是初学者。任何帮助将不胜感激。
答案 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());
将输出类似......
的内容
或者如果你想要一个新行的每个数字,你可以使用......
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
并简单地将每个数字附加到它...
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");
}
将输出类似......
的内容
现在,如果你想为它制作动画,你需要做一些不同的事情,使用javax.swing.Timer
或SwingWorker
答案 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);