【问题标题】:Paint Component wont run油漆组件不会运行
【发布时间】:2018-12-07 03:10:52
【问题描述】:

我对为什么 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有点陌生。

【问题讨论】:

    标签: java swing graphics jframe jpanel


    【解决方案1】:

    Java 名称区分大小写:

     public void PaintComponent(Graphics g){
    

    应该是:

    public void paintComponent(Graphics g){
    

    当你重写一个你应该使用的方法时:

    @Override
    public void PaintComponent(Graphics g){
    

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

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

    Graphics.repaint();
    

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

    阅读 Swing Tutorial 了解 Swing 基础知识和工作示例以帮助您入门。

    【讨论】:

    • 你的权利!我应该在打电话给 super 时注意到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多