I am drawing this (in the paint method):
g.drawString("NumPipes: " + numPipes + " " + "DeletedPipes: " + deletedPipes + " moved: " + numMoved, 0 , 10);
To output the values defined in these following methods:
public void addPipe() {
for (int i = 0; i < pipe.length; i++) {
if (pipe[i] == null) {
pipe[i] = new Pipe(this.width, (int) Math.random() * (this.height - 200));
System.out.println("Pipe Added.");
numPipes += 1;
}
}
}
public void deletePipe() {
for (int i = 0; i < pipe.length; i++) {
if (pipe[i] != null && pipe[i].returnX() <= 0) {
pipe[i] = null;
System.out.println("Pipe Deleted.");
deletedPipes += 1;
}
}
}
public void movePipe(int speed) {
for (int i = 0; i < pipe.length; i++) {
if (pipe[i] != null) {
pipe[i].move(speed);
numMoved = numMoved + 1;
System.out.println(numMoved);
}
}
}
Now when I check the console for the outputted value of numMoved
, the values are increasing/updating but they stay the same in the JFrame
(See below image, the console displays the value of numMoved
and the JFrame
shows the drawString
values). What is happening/Why is it doing this?
You don't seem to be calling repaint
, so that component doesn't know that it should update the values...
For example...
public void addPipe() {
for (int i = 0; i < pipe.length; i++) {
if (pipe[i] == null) {
pipe[i] = new Pipe(this.width, (int) Math.random() * (this.height - 200));
System.out.println("Pipe Added.");
numPipes += 1;
}
}
repaint();
}
Now, you could place repaint
after numPipes += 1
, but because of the way repaint
works, it probably won't make a difference...
This assumes that the class that addPipe
belongs to is some kind of component, but you've not supplied enough information to make proper diagnoses...