首页 > 解决方案 > 油漆组件不会运行

问题描述

我对为什么 Paint Component 没有在这段代码中运行感到非常困惑:

public class GraphicsWindow extends JPanel {
    public static final int Width = 1000, Height = 800;
    GraphicsWindow(){
        setPreferredSize(new Dimension(Width, Height));
    }
    public void PaintComponent(Graphics g){
        super.paintComponents(g);
        g.setColor(Color.red);
        for(int i = 0; i < Width/10; i++){
            g.drawLine(i * 10, 0, i*10, Height);
        }
          System.out.println("paint ran");
    }

}

主功能:

public static void main(String[] args) {
        GraphicsWindow Graphics = new GraphicsWindow();
        Graphics.setBackground(Color.green);
        Graphics.setSize(1000, 800);
        JFrame Window = new JFrame("Snake");
        Window.add(Graphics);
        Window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Window.setBounds(650, 200, 1200, 1000);
        Window.setVisible(true);
        Graphics.repaint();
    }

我已经在论坛页面后查看论坛页面大约一个小时了,但一无所获。我可以说它是油漆组件没有运行,因为控制台永远不会得到“油漆运行”打印输出。如果这是一个非常愚蠢的错误并且可能是混乱的代码,我很抱歉,我对java有点陌生。

标签: javaswinggraphicsjframejpanel

解决方案


Java 名称区分大小写:

 public void PaintComponent(Graphics g){

应该:

public void paintComponent(Graphics g){

当您覆盖一个方法时,您应该使用:

@Override
public void PaintComponent(Graphics g){

当您不覆盖现有方法时,编译器会给您一条错误消息。

变量名不应以大写字母开头。通过查看示例学习 Java 约定并遵循这些示例。

Graphics.repaint();

不需要 repaint()。当框架可见时,Swing 将绘制所有组件。

阅读 Swing 基础知识和工作示例的Swing 教程以帮助您入门。


推荐阅读