2008-08-29 13 views
6

तो मैं एक JPanelMouseListener और MouseMotionListener को लागू मिल गया है:मेरे (जावा/घुमाओ) MouseListener नहीं सुन रहा है, मुझे यह पता लगाने में मदद क्यों

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class DisplayArea extends JPanel implements MouseListener, MouseMotionListener { 
    public DisplayArea(Rectangle bounds, Display display) { 
     setLayout(null); 
     setBounds(bounds); 
     setOpaque(false); 
     setPreferredSize(new Dimension(bounds.width, bounds.height)); 

     this.display = display; 
    } 

    public void paintComponent(Graphics g) { 
     Graphics2D g2 = (Graphics2D)g; 
     if (display.getControlPanel().Antialiasing()) { 
      g2.addRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); 
     } 
     g2.setColor(Color.white); 
     g2.fillRect(0, 0, getWidth(), getHeight()); 
    } 

    public void mousePressed(MouseEvent event) { 
     System.out.println("mousePressed()"); 
     mx1 = event.getX(); 
     my1 = event.getY(); 
    } 

    public void mouseReleased(MouseEvent event) { 
     System.out.println("mouseReleased()"); 
     mx2 = event.getX(); 
     my2 = event.getY(); 

     int mode = display.getControlPanel().Mode(); 
     switch (mode) { 
     case ControlPanel.LINE: 
      System.out.println("Line from " + mx1 + ", " + my1 + " to " + mx2 + ", " + my2 + "."); 
     } 
    } 

    public void mouseEntered(MouseEvent event) { 
     System.out.println("mouseEntered()"); 
    } 

    public void mouseExited(MouseEvent event) { 
     System.out.println("mouseExited()"); 
    } 

    public void mouseClicked(MouseEvent event) { 
     System.out.println("mouseClicked()"); 
    } 

    public void mouseMoved(MouseEvent event) { 
     System.out.println("mouseMoved()"); 
    } 

    public void mouseDragged(MouseEvent event) { 
     System.out.println("mouseDragged()"); 
    } 

    private Display display = null; 

    private int mx1 = -1; 
    private int my1 = -1; 
    private int mx2 = -1; 
    private int my2 = -1; 
} 

मुसीबत है, इन माउस कार्यों में से कोई भी कभी भी कर रहे हैं बुलाया। DisplayArea इस तरह बनाई गई है:

da = new DisplayArea(new Rectangle(CONTROL_WIDTH, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT), this); 

मैं वास्तव में एक जावा प्रोग्रामर नहीं कर रहा हूँ (इस एक काम का हिस्सा है), लेकिन मैं कुछ भी चमक से स्पष्ट नहीं देख सकता। क्या मैं कुछ भी देखकर चालाक कर सकता हूँ?

उत्तर

13

लागू करता mouselistener, mousemotionlistener सिर्फ displayArea वर्ग कुछ को सुनने के लिए, से परिभाषित करने की, स्विंग घटक के माउस घटनाओं अनुमति देता है। आपको स्पष्ट रूप से परिभाषित करना होगा कि इसे क्या सुनना चाहिए। इसलिए मैं आप निर्माता के लिए कुछ इस तरह जोड़ सकते हैं लगता है:

this.addMouseListener(this); 
this.addMouseMotionListener(this); 
3

मैं कोड जहां क्रम में DisplayArea के लिए addMouseListener (यह) या addMouseMotionListener (यह) कहते हैं यह सदस्यता लेने के लिए कहीं नहीं दिख रहा है उन घटनाओं के लिए।

3

मैं नहीं माउस श्रोताओं के लिए रजिस्टर करने के लिए यहां किसी भी कोड दिख रहा है। आपको DisplayMrea पर addMouseListener (this) और addMouseMotionListener (this) को कॉल करना होगा।

संबंधित मुद्दे

 संबंधित मुद्दे