【问题标题】:Error: cannot find symbol super.paintComponent(g) in Java错误:在 Java 中找不到符号 super.paintComponent(g)
【发布时间】:2016-12-03 01:34:41
【问题描述】:

我似乎得到了错误:

error: cannot find symbol
        super.paintComponent(g);
             ^
  symbol: method paintComponent(Graphics)

在我的代码中经常出现。我似乎总是在修复它,但这总是在 5 年前的编码线程上试图找到解决方案长达一个小时之后。而且,我似乎从来不记得我做了什么。所以,我终于在这里问图形专家了。我写了一个小测试程序,应该在 JFrame 上显示一个坐标平面,但是,我收到了这个错误。我对java中的图形相当陌生,所以我没有尝试太多,除了在各种组件上调用repaint。这是我的代码:

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

public class Graph extends JFrame {
        public void showFrame(){
                setSize(400, 400);
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                JPanel plane = new JPanel();
                add(plane);

                setVisible(true);
                repaint();
        }

        public static void main(String[] args){
                Graph graph = new Graph();
                graph.showFrame();
        }

        public void paintComponent(Graphics g){
                super.paintComponent(g);
                g.setColor(Color.black);
                g.drawLine(200, 0, 200, 400);
                g.drawLine(0, 200, 400, 200);
        }
}

感谢任何帮助。提前谢谢你。

【问题讨论】:

    标签: java swing jframe paintcomponent


    【解决方案1】:

    JFrame 没有这个方法。它有

     public void paintComponents(Graphics g)
    

    继承自java.awt.Container

    【讨论】:

    • 是的,paintComponent 是用于 JPanel 的。谢谢。
    • 这是自定义绘画应该在JPanel 中完成的原因之一,而不是像JFrame 这样的顶级容器。
    • 顺便说一句 - 我们应该从不覆盖paintComponents(带有s),无论它是从JFrame继承的 JComponent。保持原样。
    • @AndrewThompson 是的,我修复了它,所以该类扩展了 JPanel 并使用了paintComponent。
    猜你喜欢
    • 2013-05-20
    • 2013-12-06
    • 2016-07-22
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多