Java 图形未在应用程序上显示

Java Graphics Are Not Displaying on Application

这是我最近创建的 java 应用程序的代码。它是在 Eclipse IDE 中创建的,没有发现任何错误。我想知道我的错误... 只需检查以下代码是否有错误。

第一个Class:

import javax.swing.*;
public class GraphicsGo extends JFrame{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public static void main(String[] args) {
        System.out.println("Noice");
        JFrame jf = new JFrame();
        JPanel pnl = new JPanel();
        jf.add(pnl);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        graphics gr = new graphics();
        jf.setSize(400, 250);
        pnl.add(gr);
        jf.setVisible(true);
    }
}

第二个Class:

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

public class graphics extends JPanel{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public void PaintComponent(Graphics g) {
        super.paintComponent(g);
        this.setBackground(Color.red);
        g.setColor(Color.blue);
        g.drawRect(0, 0, 2, 2);
        setVisible(true);
    }
}

The window 我觉得我做的一切都是对的。

类 是两个不同的文件。

许多问题:

  1. 方法名称不应以大写字符开头。要覆盖的方法应该是 paintComponent(...).

  2. Class 名称应该以大写字符开头。将您的“图形”class 重命名为更有意义的名称。学习 Java 命名约定并遵循它们以避免像这样的混淆和错误。

  3. 绘画方法不应改变 class 的状态。不要调用 setBackground()。该方法应该在创建对象时在构造函数或实例变量上调用。

  4. 自定义绘画时需要覆盖组件的getPreferredSize()。目前您的自定义组件没有合理的首选大小,因此布局管理器无法有效设置其 size/location。

请参阅 Custom Painting 上的 Swing 教程,了解如何更好地构建代码以实现上述所有建议的工作示例。