I have looked on this site and nothing has really answered my question. This is what my code looks like:
// 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));
}
and the System.out.println () yields the correct answer. for instance, the user inputs 2 and 9, it will say:
run:
2
3
4
5
6
7
8
9
but the jLabel I'm trying to set the text to, Output, only displays 9. I know his might be stupidly simple but hey, I'm a beginner. Any help would be appreciated.
Keep adding to the String every iteration, then just set the final text to the label.
This is what I'd normally do:
Every time you call
System.out.println
, it is writing the string you give it to STDOUT (aka your terminal). However, every time you callOutput.setText
, it is replacing the last string you set it to.The solution would be to create a single string containing the concatenation of all the individual numbers and then send that string into
Output.setText
.To create a string in a loop in Java you could do
Alternatively, there is a class built into Java called
StringBuilder
which is preferred in situations where efficiency is a concern. Using+
is very wasteful because it creates lots of intermediate objects that must be garbage collected.The answer "depends".
Do you want each number on a new line or appended to the end of the
String
. Do you want them displayed individually like a counter?If you want the numbers display in sequence, then you could use something like this...
Which will output something like...
Or if you wanted each number of a new line, you could use...
Which will output something like...
Now, if you want this, it would actually be easier to use a
JTextArea
and simply append each number to it...Which will output something like...
Now, if you want to animate it, you're going to need to do things different, either using a
javax.swing.Timer
orSwingWorker