私は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と関係があると思います!しかし、出力コンソールでの印刷は完全に機能しています!私はまた、forループでのThread.sleepでそれを試してみてください、まだ動作していない...
任意のアイデア?...
PS:私は、paintComponentを使用していて、そのグラフィックよう取り組んでいます私を信じて;)
グラフィックスオブジェクトは、それを受け取るペイントメソッドの期間だけ有効です。遅いタイマータスクで後で使用するために、それを「保存」することはできません。あなたのタイマーは、関連するデータを変更してから、コンポーネントに再描画(その一部)を指示する必要があります。スレッドの問題により、AWTとSwingを操作するときにjava.util.Timerではなくjavax.swing.Timerを使用することをお勧めします。 – VGR
ありがとう私はそれを試してみる::) – Caipi