我正在用java編寫一個小遊戲。爲此,我想打印一個包含文本的對話框 - 文本框,以便與遊戲中的人交談。Java圖形不能在定時器中工作
public static void printConBox(Graphics g, String firstLine, String secondLine, String thirdLine, String fourthLine){
g.setColor(Color.WHITE);
g.fillRect(x, y, 600, 180);
g.setColor(Color.BLACK);
Timer timer = new Timer();
timer.schedule(new TimerTask(){
@Override
public void run() {
if(i <= firstLine.length() - 1){
char c = firstLine.charAt(i);
i++;
String s = "" + c;
System.out.print(s);
g.drawString(s, xdif, y + 25);
xdif += 15;
}else{
timer.cancel();
}
}
}, 0, 100);}
不要擔心圖形,這是工作,因爲程序正在繪製白色的文本框。但字符串'firstLine'中的字母不存在。在運行中,這應該是文本的動畫!
我認爲這與der Timer有關!但是輸出控制檯中的打印完美無缺!我還了Thread.sleep嘗試在for循環,但仍然沒有工作...
任何想法?...
PS:我用的paintComponent和,所以對顯卡工作相信我;)
Graphics對象只在接收它的paint方法的持續時間內有效。您不能「保存」它以便以後在延遲計時器任務中使用。您的計時器必須更改相關數據,然後告訴組件重新繪製(部分)自身。請注意,由於線程問題,在使用AWT和Swing時最好使用javax.swing.Timer而不是java.util.Timer。 – VGR
好的,謝謝,我會試試它:) :) – Caipi