Java 单独类中的鼠标处理程序不工作

Java 单独类中的鼠标处理程序不工作,java,class,mouselistener,Java,Class,Mouselistener,我正在写一个疯狂的八分制游戏,并试图加入鼠标控制。我刚开始写,但我无法验证它是否有效。我已经将System.out.println()添加到按下和释放的事件调用中,但没有输出。我只需要让它工作,并能够看到某种类型的输出进行调试。我还尝试使用stackoverflow的另一个例子来帮助我,但我仍然有问题。下面的代码是我正在使用的代码。如果你需要看别的课,请告诉我。 谢谢 MouseControl.java package crazyeightscountdown.CoreClasses; imp

我正在写一个疯狂的八分制游戏,并试图加入鼠标控制。我刚开始写,但我无法验证它是否有效。我已经将System.out.println()添加到按下和释放的事件调用中,但没有输出。我只需要让它工作,并能够看到某种类型的输出进行调试。我还尝试使用stackoverflow的另一个例子来帮助我,但我仍然有问题。下面的代码是我正在使用的代码。如果你需要看别的课,请告诉我。 谢谢

MouseControl.java

package crazyeightscountdown.CoreClasses;

import java.awt.Canvas;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;


public class MouseControl extends MouseAdapter {

    public Canvas canvas;

    public MouseControl (Canvas c){
        this.canvas = c;
    }

@Override
public void mouseReleased (MouseEvent e){
    System.out.println("Mouse Released.\n");
}

@Override
public void mousePressed (MouseEvent e){
    System.out.println("Mouse Pressed.\n");
}

@Override
public void mouseClicked (MouseEvent e){

}

@Override
public void mouseEntered (MouseEvent e){

}

@Override
public void mouseExited (MouseEvent e){

}

}//class
Game.java

package crazyeightscountdown;

import static com.sun.java.accessibility.util.AWTEventMonitor.addMouseListener;
import static crazyeightscountdown.CoreClasses.Constants.CARDPICX;
import crazyeightscountdown.CoreClasses.Deck;
import crazyeightscountdown.CoreClasses.MouseControl;
import crazyeightscountdown.CoreClasses.Player;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;

//Sets up parameters for the game window
public class Game implements Runnable {

    private Display display;

    public int width, height;

    public Game(String title, int width, int height) {
        this.width = width;
        this.height = height;

        display = new Display(title, width, height);
        StartGame();
    }

//create the game decks
//Deck maindeck = new Deck();
    public Deck faceupdeck = new Deck();
    public Deck facedowndeck = new Deck();
    Deck tempdeck = new Deck();
    public int deckindex = 0;

    public Player playerone = new Player();
    public Player playertwo = new Player();

    private BufferStrategy bs;
    private Graphics g;

    private boolean running = false;
    private Thread thread;

    public void StartGame() {

        //setup mouse
        addMouseListener (new MouseControl(display.getCanvas()));

        //set players
        playerone.SetPlayer(1);
        playertwo.SetPlayer(2);
        //set values to main deck
        facedowndeck = facedowndeck.SetDeck(facedowndeck);

        //shuffle the deck
        facedowndeck = facedowndeck.ShuffleDeck(facedowndeck);

        //hand out first deal
        FirstDeal();
    }

    public void FirstDeal() {
        int playerindex = 1;
        deckindex = 1;

        //deal each player 8 cards to start
        for (int h = 0; h < 8; h++) {
            playerone.hand.card[playerindex] = facedowndeck.card[deckindex];
            facedowndeck.card[deckindex].present = false;
            playerone.hand.card[playerindex].present = true;
            deckindex++;
            playertwo.hand.card[playerindex] = facedowndeck.card[deckindex];
            facedowndeck.card[deckindex].present = false;
            playerone.hand.card[playerindex].present = true;
            deckindex++;
            playerindex++;

            //facedowndeck.Truncate(facedowndeck);
        }

        //put card face up
        faceupdeck.card[1] = facedowndeck.card[deckindex];
        deckindex++;
    }

    private void render() {
        bs = display.getCanvas().getBufferStrategy();
        if (bs == null) {
            display.getCanvas().createBufferStrategy(3);
            return;
        }
        g = bs.getDrawGraphics();
        //Clear Screen
        g.clearRect(0, 0, width, height);

    /******* START DRAWING HERE **********/
        //draw player1 deck
        for (int f = 1; f < 9; f++) {
            g.drawImage(playerone.hand.card[f].pic, (CARDPICX * (f - 1)) + (f * 5), 5, null);
            g.drawImage(playertwo.hand.card[f].pic, (CARDPICX * (f - 1)) + (f * 5), 450, null);        
        }

        g.drawImage(faceupdeck.card[1].pic,400, 200, null);

    /*********** END DRAWING HERE ***********/
        bs.show();
        g.dispose();
    }

    private void tick() {

    }

    public void run() {

        //init();
        while (running) {
            tick();
            render();
        }

        stop();

    }

    public synchronized void start() {
        if (running) {
            return;
        }
        running = true;
        thread = new Thread(this);
        thread.start();
    }

    public synchronized void stop() {
        if (!running) {
            return;
        }
        running = false;
        try {
            thread.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}//class

您必须将MouseListener添加到组件:
frame.addMouseListener(…)

您确定您的代码可以编译吗<代码>addMouseListener(新的MouseControl(display.getCanvas())看起来很奇怪,因为游戏类甚至不是JComponent,您希望它如何覆盖
addMouseListener()
?将我的代码更改为:display.frame.addMouseListener(新的MouseControl(display.canvas));仍然没有产出
package crazyeightscountdown;


import java.awt.Canvas;
import java.awt.Dimension;

import javax.swing.JFrame;

//display parameters for the window
public class Display {

    public JFrame frame;
    public Canvas canvas;

    public String title;
    public int width, height;

    public Display(String title, int width, int height){
        this.title = title;
        this.width = width;
        this.height = height;

        createDisplay();
    }

    private void createDisplay(){
        frame = new JFrame(title);
        frame.setSize(width, height);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

        canvas = new Canvas();
        canvas.setPreferredSize(new Dimension(width, height));
        canvas.setMaximumSize(new Dimension(width, height));
        canvas.setMinimumSize(new Dimension(width, height));

        frame.add(canvas);
        frame.pack();
    }

        public Canvas getCanvas(){
        return canvas;
    }

}