そのため、「@Override」の注釈グラフィックスを描画することはできません

Quijibo :

私は、私が作成することがありますプログラムのために、将来的にこれらの実験を使用することができますので、私は、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);

}

あなたが見ることができるように、私は新しい広場を毎秒を描画しようとしています。問題は、私は、コード内のエラーを取得し、次のとおりです。

この方法は、スーパータイプからメソッドをオーバーライドまたは実装していません。

私はこれをどのように修正することができますか?

camickr:

私はこれをどのように修正することができますか?

run()メソッドは、パラメータを取りません。グラフィックスパラメータを取り除きます。それは、コンパイルエラーを取り除くでしょう。

しかし、それはまだあなたの絵との助けにはなりません。

代わりに、オーバーライドする必要paintComponent(...)の方法をJPanel、あなたがフレームにパネルを追加します。次に、あなたの絵を行うためのpaintComponent()メソッドに渡されたGraphicsオブジェクトを使用します。

上のSwingのチュートリアルからセクション読むカスタムペイントの詳細については、あなたが始めるために例の作業を。

また、あなたはアニメーションのTimerTaskをを使用してはいけません。あなたは使うべきスイングタイマーをそして、中actionPerformed(...)の方法ActionListener、あなたのカスタムペイントのプロパティを変更します(つまり、あなたのケースで塗装される新しい正方形のオブジェクトを追加)してから起動repaint()パネルに。

、私は新しい正方形の毎秒を描画しようとしています

チェックアウトDrawOnImageで見つかった例カスタムペイントアプローチをこれは、BufferedImageのにRectangleオブジェクトを追加する方法を紹介します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=119781&siteId=1