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 回答