【问题标题】:PaintComponent not working for drawing shapesPaintComponent 不适用于绘制形状
【发布时间】:2013-07-15 09:41:54
【问题描述】:

我在学习图形并尝试使用PaintComponent绘制一些形状,以下是代码。我尝试了一个小时,但它仍然无法正常工作,真的找不到理由。这个简单问题的解决方法是什么?

public class MyPainting  extends JPanel
{

    public void PaintComponent (Graphics g) 
    {
        super.paintComponent(g);
        g.setColor(Color.RED);
        g.drawRect(100, 100, 10, 20);
    }

    public  static void main (String [] args)
    {
        MyPainting p =  new MyPainting();
        JFrame f= new JFrame();
        f.setSize(300,300);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(p);       
        f.setVisible(true);
    }
}

当我运行程序时,JFrame 是空的,我确实尝试过g.drawString, ImageIcon,但每次都看不到任何东西。

【问题讨论】:

    标签: java swing jframe paintcomponent


    【解决方案1】:

    方法PaintComponent 没有在JPanel 的任何超类中定义。你要paintComponent

    @Override
    public void paintComponent (Graphics g) 
    

    并添加@Override 注释以允许编译器检查正确的方法。

    【讨论】:

    • 天啊,我太松了。为此浪费了 1 个小时。
    • 因为你没有添加@Override注解
    • 对于 PaintComponent(not paint..) 我确实添加了 @Override 并且编译器说“MyPainting 类型的方法 PaintComponent(Graphics) 必须覆盖或实现超类型方法 1 qucik 修复删除覆盖”所以我删除了它,现在对于paintComponent,当我添加覆盖时没有错误
    • @JavaStudent :实际上,这个注释 (@Override) 是为了这个东西,可以肯定的是,你实际上是在覆盖超类的方法而不是创建你自己的一个。如果您在覆盖方法时犯了一个小错误,此注释将有助于生成编译时错误,Annotations 中的更多信息@ +1 答案,尽管这需要一些时间:(达到限制障碍。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    相关资源
    最近更新 更多