Die Klasse MouseListener
, die ich im Code-Segment habe, wird nie aufgerufen, unabhängig von einem Klick. Ich fragte mich, ob ich etwas anderes in meiner Klasse brauchte, da nur der Zuhörer anwesend ist, funktioniert nicht gut für mich.MouseListener Klasse nie aufgerufen?
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) {}
}
}
Was macht Sie denken, der Hörer würde jemals irgendwelche Ereignisse erhalten? Nur eine Klasse zu erstellen ist nicht genug. Sie müssen eine Instanz der Listener-Klasse für die Komponente (n) registrieren, von denen Sie möchten, dass diese Instanz Ereignisse empfängt. Sie präsentieren nichts davon. Fehler bei der Registrierung und Registrierung bei der falschen Komponente sind bei weitem die wahrscheinlichsten Gründe dafür, keine Ereignisse zu beobachten. –