【问题标题】:Java Graphics Are Not Displaying on ApplicationJava 图形未在应用程序上显示
【发布时间】:2021-08-12 22:59:22
【问题描述】:

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

第一课:

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);
    }
}

二等:

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 我认为我做的一切都是正确的。

类是两个不同的文件。

【问题讨论】:

    标签: java swing graphics


    【解决方案1】:

    很多问题:

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

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

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

    4. 在进行自定义绘制时,您需要覆盖组件的getPreferredSize()。目前您的自定义组件没有合理的首选尺寸,因此布局管理器无法有效地设置其尺寸/位置。

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

    【讨论】:

    • 非常感谢。它的工作!我只需要将 PaintComponent() 更改为 paintComponent()!
    • @LukeHoneyball,我只需要改变... - 不,这不是唯一的改变。它可能看起来有效,但如果您更改绘画代码,它将无法正常工作。例如,将矩形的宽度/高度更改为 (200, 200) 以查看它不起作用。学习如何正确绘画并学习如何正确构建代码。
    猜你喜欢
    • 1970-01-01
    • 2012-07-19
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多