Java 为什么图像不移动?

Java 为什么图像不移动?,java,swing,Java,Swing,也许有人能提示我我的代码哪里做错了?每当鼠标在板上移动时,我想让player.png图像改变x的位置,但看起来该图像根本没有出现。。。我在跟踪 教程,但电路板仅以黑色背景打开,没有其他内容 主要类别: package com.alexz; import com.alexz.interfaces.Commons; import javax.swing.JFrame; import java.awt.EventQueue; public class Main extends JFrame im

也许有人能提示我我的代码哪里做错了?每当鼠标在板上移动时,我想让player.png图像改变x的位置,但看起来该图像根本没有出现。。。我在跟踪 教程,但电路板仅以黑色背景打开,没有其他内容

主要类别:

package com.alexz;

import com.alexz.interfaces.Commons;

import javax.swing.JFrame;
import java.awt.EventQueue;

public class Main extends JFrame implements Commons{
public Main(){
    initUI();
}

private void initUI(){
    add(new Board());

    setTitle("->>FireUP<<-");
    setSize(BWIDTH, BHEIGHT);
    setResizable(false);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
}

public static void main(String[] args) {
    EventQueue.invokeLater(()->{
        Main app = new Main();
        app.setVisible(true);
    });
}
}
package com.alexz;
导入com.alexz.interfaces.Commons;
导入javax.swing.JFrame;
导入java.awt.EventQueue;
公共类Main扩展JFrame实现Commons{
公用干管(){
initUI();
}
私有void initUI(){
添加(新板());

片名("->>FireUPgameInit
中的条件永远不会为真,因为您将状态设置为启动线程之前必须具有的值。

不幸的是,这没有帮助..电路板仍然是黑色的,没有显示任何交互..然后您会遇到另一个问题。我建议编写干净的代码并添加一些单元测试。为了更快获得更好的帮助,张贴一个或多个标签。
package com.alexz;

import com.alexz.interfaces.Commons;

import javax.swing.JPanel;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class Board extends JPanel implements Commons, Runnable{

    private STATE state = STATE.IN_GAME;
    private Thread animator;
    private Player player;

    public Board(){
        initBoard();
    }

    private void initBoard(){
        addMouseMotionListener(new MAdapter());
        setFocusable(true);
        setBackground(Color.BLACK);

        gameInit();
        setDoubleBuffered(true);
    }

    private void gameInit(){
        player = new Player();

        if(animator==null || state != STATE.IN_GAME){
            animator = new Thread();
            animator.start();
        }
    }


    @Override
    public void addNotify(){
        super.addNotify();
        gameInit();
    }

    private void drawPlayer(Graphics g){
        if(player.isVisible()){
            g.drawImage(player.getImage(), player.getX(), player.getY(), this);
        }else{
            state = STATE.DEAD;
            player.setVisible(false);
            //game over function call
        }
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        if (state == STATE.IN_GAME){
            drawPlayer(g);
        }

        Toolkit.getDefaultToolkit().sync();
        g.dispose();
    }

    private void animationCycle(){
        player.move();
    }

    @Override
    public void run(){
        long before, diff, sleep;
        before = System.currentTimeMillis();
        while(state == STATE.IN_GAME){

            animationCycle();

            diff = System.currentTimeMillis() - before;
            sleep = DELAY - diff;
             if (sleep < 0)
                 sleep = 2;

             try{
                 Thread.sleep(sleep);
             }catch(InterruptedException e){
                 System.out.println("ERROR: Interrupted Exception");
             }

             before = System.currentTimeMillis();
             repaint();
        }

    }

    private class MAdapter extends MouseAdapter{

        @Override
        public void mouseMoved(MouseEvent e) {
            super.mouseMoved(e);
            player.mouseMoved(e);
        }
    }
}