解决静态方法问题

马克·希尔

因此,我对Java相对较新,但是在静态内容方面存在问题。一个我不确定是什么静态东西,但我知道这很可笑,其次,我有一个小游戏“ Pong”,我一直在练习这种游戏,我正努力提高记分板的性能。但这是在说Cannot make a static reference to the non-static method getScore()

这是下面的代码,由于我仍然是菜鸟,因此对它的任何建议都将有所帮助。

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

public class PongGame extends JComponent implements ActionListener, MouseMotionListener{
    private int ballX = 385;
    private int ballY = 285;
    private int paddleOpX = 0;
    private int paddleX = 0; 
    private int ballYSpeed = 1;
    private int ballXSpeed = 1;
    public Integer score = 0;

    private static Timer t = null;

    public static void main(String[] args){
        JLabel scoreBoard = new JLabel(getScore().toString());
        JFrame window = new JFrame("Hit the Damn Ball");
        window.setLayout(new BorderLayout());
        window.getContentPane().setBackground(new Color(0, 0, 0));

        PongGame game = new PongGame();

        window.add(game);

        window.pack();
        window.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        window.setLocationRelativeTo(null);
        window.setVisible(true);

        t = new Timer(5, game);
        t.start();

        window.addMouseMotionListener(game);

    }

    //set the size of window
    public Dimension getPreferredSize(){
        return new Dimension(800, 600);
    }

    @Override
    protected void paintComponent(Graphics g){
        g.setColor(new Color(110, 65, 13));
        g.fillRect(paddleX, 510, 150, 15);

        g.setColor(new Color(90, 0,0));
        g.fillRect(paddleOpX, 90, 150, 15);

        g.setColor(Color.WHITE);
        g.fillOval(ballX, ballY, 30, 30);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        paddleOpX = (ballX+5);
        ballX +=ballXSpeed;
        ballY +=ballYSpeed;

        if(ballX >= paddleX-30 && ballX <= (paddleX + 150) && ballY >= 480){
            ballYSpeed = -ballYSpeed;
            //ballYSpeed = -1;
            setScore();
        }
        if(ballX >= paddleX-30 && ballX <= (paddleX + 150) && ballY > 480){
            ballYSpeed = -ballYSpeed;
            //ballYSpeed = 1;
            setScore();
        }
        if(ballX >= paddleOpX-30 && ballX <=(paddleOpX + 150) && ballY <= 106){
            ballYSpeed = ballYSpeed*-1;
        }

        if(ballY > 570){
            ballXSpeed  = 0;
            ballYSpeed = 0;
            t.stop();
            System.out.println(score);
        }
        if(ballX >= 770){
            ballXSpeed = -ballXSpeed;
            //ballXSpeed = -1;
        }
        if(ballY <= 0){
            ballXSpeed  = 0;
            ballYSpeed = 0;
            t.stop();
            System.out.println(score);
            //ballYSpeed = 1;

        }
        if(ballX <= 0){
            ballXSpeed = ballXSpeed*-1;
            //ballXSpeed = 1;
        }
        repaint();

    }

    @Override
    public void mouseDragged(MouseEvent e) {
    }

    @Override
    public void mouseMoved(MouseEvent e) {
        paddleX  = e.getX()-75;

        if(ballX >= paddleX-30 && ballX <= (paddleX + 150) && ballY == 480 ){
            ballYSpeed = ballYSpeed-1;
            ballXSpeed = ballXSpeed < 0 ? -2 : 2;
            //ballYSpeed = 1;
        }
        repaint();
    }

    private void setScore(){
        score++;
    }
    public Integer getScore(){
        return score;
    }
}
格特曼

实例方法getScore()需要一个可以在其上调用该方法的对象,因为它不是static,但是您还没有一个。

移至PongGame game = new PongGame();的第一行main,然后更改

JLabel scoreBoard = new JLabel(getScore().toString());

JLabel scoreBoard = new JLabel(game.getScore().toString());

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

解决静态方法问题

来自分类Dev

解决静态方法的歧义

来自分类Dev

非静态方法问题

来自分类Dev

静态递归方法的问题

来自分类Dev

解决使用静态多态的构造函数问题

来自分类Dev

我该如何解决通过方法一次访问所有非静态和静态变量的问题?

来自分类Dev

无法静态引用非静态方法问题

来自分类Dev

静态抽象方法解决方法

来自分类Dev

问题:扩展方法必须是静态的

来自分类Dev

Java getResourceAsStream静态解决方法。正确?

来自分类Dev

如何使用Django和Nginx解决404静态文件的问题?

来自分类Dev

如何使用Django和Nginx解决404静态文件的问题?

来自分类Dev

如何在作为输入接收器的 onCreate() 中解决“非静态 vs 静态”问题

来自分类Dev

静态方法的宏日志使用问题

来自分类Dev

静态/实例方法和扩展问题

来自分类Dev

静态重写/抽象方法-有什么好的解决方法?

来自分类Dev

角度状态问题和解决方法

来自分类Dev

Angular Js解决方法的问题

来自分类Dev

AVSpeechSynthesizer的问题,任何解决方法?

来自分类Dev

扩展解决方法?缩放问题

来自分类Dev

继承是解决此问题的正确方法吗?

来自分类Dev

IE scrollWidth问题的解决方法

来自分类Dev

VLookup问题以及可能的解决方法

来自分类Dev

如何使用替换方法解决这个问题?

来自分类Dev

什么是解决这个问题的好方法?

来自分类Dev

那是解决这个问题的正确方法吗?

来自分类Dev

如何解决默认方法行为的问题?

来自分类Dev

无法找出解决数组问题的方法

来自分类Dev

C#中静态成员继承的解决方法