为什么这段代码没有显示任何椭圆形

时间:2013-10-31 08:47:47

标签: java swing

我正在尝试向框架添加一个椭圆,并且在执行程序后框架显示,其中没有任何内容显示。背景颜色甚至来了。只有椭圆形不可见。建议请。

   import javax.swing.*;
import java.awt.Color;
import java.awt.Graphics;

@SuppressWarnings("serial")
public class Example1 extends JFrame{


    Example1()
    {
        JFrame jp=new JFrame("spot");

         jp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        jp.setVisible(true);
        jp.setSize(400,400);

    }

  public void paint(Graphics g)
  {
      super.paint(g);
      g.setColor(Color.BLACK);

      g.fillOval(100,50,40,50);

  }

  public static void main(String...args)
{

    @SuppressWarnings("unused")
    Example1 obj = new Example1();


}
}

2 个答案:

答案 0 :(得分:2)

因为你在扩展的JComponent中绘制椭圆,你不能在任何地方使用它。

您只是使用JFrame,设置其背景颜色并显示它。您应该在JFrame的内容窗格中添加了扩展的JComponent。

修改

你正在扩展JFrame来覆盖paint()方法,好吧(但这不是正确的方法)。但是你没有用它来显示GUI。您正在Example1的构造函数中创建一些不同的JFrame并使用它显示GUI。

您应该显示扩展的JFrame。像这样:

    Example1 obj = new Example1();
    // Example1 extends JFrame, and overrides paint() method to display oval.
    // so display this Example1 frame, not creating some different JFrame.
    obj.setSize(400,400);
    obj.setVisible(true);

答案 1 :(得分:1)

先绘制,然后将颜色设置为红色。您是否认为这会改变您之前绘制的椭圆的颜色?

绘画步骤:

  1. 设置颜色
  2. 绘制