JPanel 类型的方法未定义

问题描述

所以我试图创建一个简单的程序来打印一个矩形,但我遇到了这个问题,我不知道如何解决它。这是我的代码

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.*;

public class GraphicsEditor extends JPanel{
    
    public void drawShape(Graphics g) {
        super.drawShape(g);
        g.setColor(Color.BLUE);
        g.drawRect(100,100,120,150);
    }
    
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        
        GraphicsEditor ga = new GraphicsEditor();
        
        frame.setSize(1280,720);
        frame.setVisible(true);
        frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
    
        frame.add(ga);
    }

}

错误是当我尝试在此处添加 super 时:

public void drawShape(Graphics g) {
            super.drawShape(g);
            g.setColor(Color.BLUE);
            g.drawRect(100,150);
        }

解决方法

JPanel 没有 drawShape(Graphics) 方法,因此调用 'super' 方法没有意义。当您认为要覆盖一个方法时,请务必添加 @Override 表示法,以便在该方法拼写错误、使用错误参数或完全不存在时收到编译器警告(情况就是如此)在这里)。

解决此问题的正确方法是覆盖 paintComponent 方法,调用(现有的)超级方法,然后立即调用 drawShape 方法,并使用提供给Graphics 方法。

这是GUI缩小后的结果:

enter image description here

paintComponent