我覺得我看到類似這樣的東西的地方:
這就是我做public static String iron = IronCount + " iron";
。
我想吃什麼,我看到的是,如果我的public int IronCount
改變,字符串鐵會改變,但事實並非如此,至少不改變,而IronCount在一個定時器改變。
我的全代碼是在這裏(沒有所有的g.fillRect()
S的):爲什麼我的公共字符串不改變它的字符串?
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JComponent;
public class GeneratorAndGraphics extends JComponent {
private static final long serialVersionUID = 1L;
public int IronCount = 0, GoldCount = 0, DiamondCount = 0;
public String iron = IronCount + " iron"; //$NON-NLS-1$
public void paint(Graphics g) {
// vertical lines
Graphics2D g2d = (Graphics2D) g;
// iron generator
g.setColor(Color.BLACK);
g.drawRect(20, 20, 40, 40);
g.drawLine(20, 30, 60, 30);
g.setFont(new Font("Arial", Font.PLAIN, 9)); //$NON-NLS-1$
g.drawString("Iron Gen", 22, 30); //$NON-NLS-1$
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
IronCount++;
iron = IronCount + " iron"; // doesn't do anything
System.out.println(iron); // doens't print
}
},
500
);
g.drawString(iron, 25, 45);
}
}
我認爲任何時候IronCount改變,鐵會改變,但它並沒有看到,因爲g.drawString(iron, 25, 45);
總是說:0 iron
在我的JFrame 。
也許這是Timer的錯誤,我想有一個更好的選擇 - 例如減慢for-loop的重複速度。
你可以包括你的代碼[MCVE]您可能不希望重寫'paint',並且您幾乎肯定不希望每次調用paint時都要執行新的計時器任務。 – pvg