Java MouseListener类从未打过电话?

Java MouseListener类从未打过电话?,java,user-interface,mouselistener,Java,User Interface,Mouselistener,我在代码段中拥有的MouseListener类永远不会被调用,无论是否单击。我想知道我的生物课程是否还需要其他东西,因为只有听众在场对我来说不太合适 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Creature { private static int catchCounter = 0, missCounter = 0;//Used to track the amount of

我在代码段中拥有的
MouseListener
类永远不会被调用,无论是否单击。我想知道我的
生物
课程是否还需要其他东西,因为只有听众在场对我来说不太合适

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Creature 
{
  private static int catchCounter = 0, missCounter = 0;//Used to track the amount of misses and catches
  //----------------------------------------------------
  //Listener class to see if the creature was clicked on
  //----------------------------------------------------
  private class ClickListener implements MouseListener
  {
    public void mousePressed(MouseEvent event)
    {
      System.out.println("this works");
      if (GamePanel.xContainNeg < event.getX() &&  event.getX() < GamePanel.xContainPos)
      {
        if (GamePanel.yContainNeg < event.getY() && event.getY() < GamePanel.yContainPos)
        {
          catchCounter++;
          if (catchCounter == 10)
          {
            //Ends game if they won
            JOptionPane.showMessageDialog(null, "Congratulations! You won!");
            GamePanel.timer.stop();
          }
          else
          {
            //Continues game if not
            GamePanel.timer.restart();
            GamePanel.stats.setText("Catches: " + catchCounter + " \tMisses: " + missCounter);
          }                 
        }
        else 
        {
          missCounter++;
          if (missCounter == 10)
          {
            //Ends game if lost
            JOptionPane.showMessageDialog(null, "You missed 3 times! You lose!");
            GamePanel.timer.stop();
          }
          else
          {
            //continues game if not
            GamePanel.timer.restart();  
            GamePanel.stats.setText("Catches: " + catchCounter + " \tMisses: " + missCounter);
          }
        }
      }
      else 
      {
        missCounter++;
        if (missCounter == 10)
        {
          //ends game if lost
          JOptionPane.showMessageDialog(null, "You missed 3 times! You lose!");
          GamePanel.timer.stop();
        }
        else
        {
          //continues game if not
          GamePanel.timer.restart();
          GamePanel.stats.setText("Catches: " + catchCounter + " \tMisses: " + missCounter);
        }
      }
    }
    //Empty methods
    public void mouseReleased(MouseEvent event) {}
    public void mouseClicked(MouseEvent event) {}
    public void mouseExited(MouseEvent event) {}
    public void mouseEntered(MouseEvent event) {}
  }
}
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
公营动物
{
private static int catchCounter=0,missCounter=0;//用于跟踪未命中和捕获的数量
//----------------------------------------------------
//侦听器类以查看是否单击了该生物
//----------------------------------------------------
私有类ClickListener实现MouseListener
{
公共无效鼠标按下(鼠标事件)
{
System.out.println(“本工程”);
if(GamePanel.xContainNeg
这就是你所有的吗?你的主要方法是什么?您从未将鼠标侦听器实现到任何东西,您需要一个组件并添加鼠标侦听器,比如您有一个JPanel

JPanel panel = new JPanel();
panel.addMouseListener(//*add mouse listener here*//);

这是你所有的吗?你的主要方法是什么?您从未将鼠标侦听器实现到任何东西,您需要一个组件并添加鼠标侦听器,比如您有一个JPanel

JPanel panel = new JPanel();
panel.addMouseListener(//*add mouse listener here*//);

你凭什么认为听众会收到任何事件?仅仅创建一个类是不够的。必须在希望侦听器类的实例从中接收事件的组件上注册该类的实例。你什么都不做。到目前为止,注册失败和注册错误的组件是不观察任何事件的最可能原因。您认为侦听器会收到任何事件的原因是什么?仅仅创建一个类是不够的。必须在希望侦听器类的实例从中接收事件的组件上注册该类的实例。你什么都不做。到目前为止,注册失败和注册错误的组件是没有观察到任何事件的最可能原因。我切换了这个监听器并将其放入一个Panel类中,但它仍然无法工作。我将把.addMouseListener()方法放在哪里?在ClickListener类或Panel类中?您的Panel类是否扩展了JPanel?如果是这样的话,那么您可以这样做。addMouseListener()而不是创建一个新的JPanel对象。一旦你有了它,确保你也调用了鼠标监听器。你能提供剩下的代码吗?帮助你会容易得多,还有另外两门课。我切换了这个监听器并将其放入一个Panel类中,但它仍然无法工作。我将把.addMouseListener()方法放在哪里?在ClickListener类或Panel类中?您的Panel类是否扩展了JPanel?如果是这样的话,那么您可以这样做。addMouseListener()而不是创建一个新的JPanel对象。一旦你有了它,确保你也调用了鼠标监听器。你能提供剩下的代码吗?帮助你会容易得多