PaintComponent error



我的代码有错误的说法:

at javax.swing.JComponent.paintComponent(JComponent.java:783)
at com.game.screen.screen.PaintComponent(screen.java:29)
at com.game.screen.screen.GameScreen(screen.java:39)
at com.game.gamecore.Core.StartGame(Core.java:15)
at com.game.gamecore.Core.main(Core.java:6)

我的代码:com.game.screen

package com.game.screen;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Ellipse2D;
import javax.swing.*;
public class screen extends JPanel implements ActionListener  {
    /**
     * 
     */
    ActionListener AL = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
        }
    };
    Timer timer = new Timer(5, AL);
    double x = 0, y = 0, velY = 0,velX = 0;

    public void PaintComponent(Graphics pixel){
        super.paintComponent(pixel);
        Graphics2D g2 = (Graphics2D) pixel;
        Ellipse2D circle = new Ellipse2D.Double(x,y,40,40);
        g2.fill(circle);
        timer.start();
    }
    public void GameScreen(){
        JFrame GameScreen = new JFrame("THE GAME");
        GameScreen.setSize(600, 600);
         PaintComponent(null);
        GameScreen.setVisible(true);


    }
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
    }
}

com.game.gamecore.core

package com.game.gamecore;
public class Core {
    public static void main(String[] args) {
    //  new Menu();
    new Core().StartGame(); 
    }
    public void StartGame(){
        String GameState = "idle";
        if(GameState=="idle"){
        GameState="Running";
        new com.game.screen.screen().GameScreen();

        } else if(GameState=="Running") {
            //enter process kill code here
        }
    }
}

我该如何称呼我的PaintComponent(Grahpics G)代码?

ineedto键入随机的东西,其他事情不会让我发布它...我只会继续打开它,直到它停止给我错误...

问题和一些解决方案:

  1. PaintComponent!= paintComponent。字符串案件对Java标识符很重要,因此请使用正确的标识符,以下是paintComponent
  2. 您在paintComponent方法覆盖之前不使用@Override。如果您这样做了,编译器会指出您的方法不是真正的覆盖物,迫使您更仔细地检查方法签名以了解原因,并且您可能会自己发现案件错误。
  3. 关于if(GameState=="idle"){,请勿使用==!=比较字符串。改用equals(...)equalsIgnoreCase(...)方法。了解==检查两个对象引用是否相同,而不是您感兴趣的。这就是这里重要的。因此,if ("idle".equals(GameState)) {或更好的是,将枚举用于游戏状态,因为这将更加万无一失。
  4. 您仅在您的问题上发布了一个例外的一部分,但忽略了至关重要的开始部分,该部分告诉您确切的例外情况。它是什么?nullpointerexception?
  5. re,timer.start();-您正在从paintComponent方法中调用此功能,您不应该这样做。您无法完全控制何时或何时调用PaintComponent,因此在此方法中永远不应该具有对象状态更改代码。
  6. PaintComponent(null);您是直接调用绘画方法,这是您永远不应该做的事情。相反,如果您想向JVM建议为您进行绘画,请致电repaint()。这就是您的NullPoInterException的原因(我们现在知道正在发生)。您将传递图形对象的null引用,然后尝试调用其上的方法。不要这样做。

相关内容

  • 没有找到相关文章

最新更新