Класс MouseListener
, который у меня есть в сегменте кода, никогда не вызывается, независимо от щелчка. Мне было интересно, нужно ли мне что-нибудь еще в моем классе Creature
, поскольку только наличие слушателя не подходит для меня.Класс 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) {}
}
}
Что заставляет вас думать, что слушатель когда-либо получал какие-либо события? Просто создать класс недостаточно. Вы должны зарегистрировать экземпляр класса слушателя на компоненте (-ах), из которого вы хотите, чтобы этот экземпляр принимал события. Вы ничего не представляете. Неспособность зарегистрировать и зарегистрировать неправильный компонент, безусловно, являются наиболее вероятными причинами несоблюдения каких-либо событий. –