1

私はJava Swingの新しい学習者です。私はいくつかの形を描こうとしています。

しかし、次のコードを実行すると、グラフがまったく表示されません。

理由がわかりません。誰か助けてくれませんか?どうもありがとう!

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

public class Draw 
{
    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                DrawFrame frame = new DrawFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
            }
        });
    }
}

class DrawFrame extends JFrame
{
    public static final int DEFAULT_WIDTH = 400;
    public static final int DEFAULT_HEIGHT = 400;

    public DrawFrame()
    {
        setTitle("DrawTest");
        setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

        DrawComponent component = new DrawComponent();
        add(component);
    }
}

class DrawComponent extends JComponent
{
    public void painComponent(Graphics g)
    {
        Graphics2D g2= (Graphics2D) g;
        Rectangle2D rec = new Rectangle2D.Double(100, 100, 200, 150);
        g2.draw(rec);

        Ellipse2D ellipse = new Ellipse2D.Double();
        ellipse.setFrame(rec);
        g2.draw(ellipse);
    }
}
4

1 に答える 1

3

提供されたコードでは、paintComponentメソッドの名前にエラーがあります。

public void painComponent(Graphics g)

したがって、実際にはスーパークラスのメソッドをオーバーライドしていません。@Override アノテーションを追加して、メソッドが実際に何もオーバーライドしない場合にコンパイラがエラーを出すようにすることができます。次に例を示します。

@Override
public void painComponent(Graphics g)
于 2013-03-11T13:05:38.317 に答える