私は、私が作成することがありますプログラムのために、将来的にこれらの実験を使用することができますので、私は、JFrameの上の描画を実験してきました。設定タイマーを持ちながらものを描画する方法:しかし、私は私が解決することはできませんよという問題を発見しました。
public static void MyTimer() {
JFrame frame = new JFrame("Colors");
int width = 700;
int height = 700;
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setBackground(Color.BLACK);
frame.pack();
frame.setSize(width, height);
frame.setVisible(true);
frame.setResizable(false);
TimerTask task;
task = new TimerTask() {
int a = 2;
@Override
public void run(Graphics g) {
g.drawRect(a, 2, a + 66, 68);
g.fillRect(a, 2, a + 66, 68);
a = a + 20;
}
};
timer.schedule(task, 0, 1000);
}
あなたが見ることができるように、私は新しい広場を毎秒を描画しようとしています。問題は、私は、コード内のエラーを取得し、次のとおりです。
この方法は、スーパータイプからメソッドをオーバーライドまたは実装していません。
私はこれをどのように修正することができますか?
私はこれをどのように修正することができますか?
run()
メソッドは、パラメータを取りません。グラフィックスパラメータを取り除きます。それは、コンパイルエラーを取り除くでしょう。
しかし、それはまだあなたの絵との助けにはなりません。
代わりに、オーバーライドする必要paintComponent(...)
の方法をJPanel
、あなたがフレームにパネルを追加します。次に、あなたの絵を行うためのpaintComponent()メソッドに渡されたGraphicsオブジェクトを使用します。
上のSwingのチュートリアルからセクション読むカスタムペイントの詳細については、あなたが始めるために例の作業を。
また、あなたはアニメーションのTimerTaskをを使用してはいけません。あなたは使うべきスイングタイマーを。そして、中actionPerformed(...)
の方法ActionListener
、あなたのカスタムペイントのプロパティを変更します(つまり、あなたのケースで塗装される新しい正方形のオブジェクトを追加)してから起動repaint()
パネルに。
、私は新しい正方形の毎秒を描画しようとしています
チェックアウトDrawOnImage
で見つかった例カスタムペイントアプローチを。これは、BufferedImageのにRectangleオブジェクトを追加する方法を紹介します。