2016-04-13 28 views
1

MouseListener sınıfı Herhangi bir tıklamadan bağımsız olarak, kod bölümünde hiç bulunmadım. Merak ediyorum ki sadece dinleyiciye sahip olmak benim için iyi çalışmadığı için, Creature sınıfımda başka bir şeye ihtiyacım olup olmadığını merak ediyordum.MouseListener sınıfı hiç çağrılmadı mı?

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) {} 
    } 
} 
+0

? Sadece bir sınıf oluşturmak yeterli değildir. Olayları almak için o örnekte olmasını istediğiniz bileşen (ler) üzerinde bir dinleyici sınıfının bir örneğini kaydetmelisiniz. Bunlardan hiçbirini sunmuyorsun. Yanlış bileşen üzerinde kayıt ve tescil yapılmaması, herhangi bir olayı gözlemlememenin en olası nedenleridir. –

cevap

0

Elinizdeki her şey bu mu? Ana metodun nerede? Hiçbir şey için fare dinleyici uygulamak asla, bir bileşene ihtiyacınız ve sahip olmadığı gibi fare dinleyicisi eklemek JPanel Eğer dinleyici Hiç olayları alacağı düşündüren nedir

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

Bununla birlikte 2 başka sınıf daha vardı. Bu dinleyiciyi değiştirdim ve bir Panel sınıfına koydum ve hala çalışmıyor. .addMouseListener() yöntemini nereye yerleştirebilirim? ClickListener sınıfında veya Panel sınıfında? – DianaMarie0223

+0

Panel sınıfınız JPanel'i uzatıyor mu? Öyleyse, yeni bir JPanel nesnesi oluşturmak yerine this.addMouseListener() öğesini yaparsınız. Bunu yaptıktan sonra, fare dinleyicisini de çağırdığınızdan emin olun. Kodun kalanını sağlayabilir misiniz? Sana yardım etmek çok daha kolay olurdu – Plee