2011-12-08 16 views
5

के भीतर घटना स्थानांतरित हो गया है मुझे अपने माउस ईवेंट को काम करने के साथ कुछ समस्याएं आ रही हैं। मेरे पास जेएलएरपेनपेन के अंदर एक जेपीनल है जो जेएसक्रॉलपेन में है। माना जाता है कि, मैं स्विंग के साथ काम करने के लिए बिल्कुल नया हूं, लेकिन अनिवार्य रूप से, मैं चाहता हूं कि जेपीनेल माउस चलने पर प्रतिक्रिया करे, लेकिन इसे काम करने में असमर्थ रहे।माउस जेपीनल

public class CellHighlighter extends JPanel implements MouseMotionListener{ 

    public CellHighlighter(){ 

    } 

    public void mouseMoved(MouseEvent evt){ 
     System.out.println(evt.getPoint().x + ", " + evt.getPoint().y); 
    } 

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

} 

किसी भी मदद की बहुत सराहना की जाएगी, अग्रिम धन्यवाद!

उत्तर

4

क्या आप माउस जेनर के साथ अपना जेपीनल ऑब्जेक्ट पंजीकृत कर रहे हैं? कुछ की तरह:

public CellHighlighter(){ 
     this.addMouseMotionListener(this); 
    } 

या शायद आप Scrollpane या LayeredPane को MouseListener जोड़ने की जरूरत है?

+0

ओह मुझे एहसास हुआ नहीं था, आप :) –

+0

धन्यवाद * यहाँ तक कि जब एक ही उदाहरण है इस बात पर बल दिया जाना चाहिए कि 'addMouseMotionListener' * आवश्यक है पहले से ही 'addMouseListener' के माध्यम से जोड़ा जा सकता है। –

2

यहाँ आप के साथ खेल सकते कुछ डेमो कोड है:

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseMotionListener; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class ReactPanel extends JPanel implements MouseMotionListener { 

    public ReactPanel(){ 
     setPreferredSize(new Dimension(450, 450)); 
     setBackground(Color.GREEN); 
     addMouseMotionListener(this); 
    } 

    @Override 
    public void mouseDragged(MouseEvent e) { 
     System.out.println("Mouse dragged (" + e.getX() + ',' + e.getY() + ')'); 
    } 

    @Override 
    public void mouseMoved(MouseEvent e) { 
     System.out.println("Mouse moved (" + e.getX() + ',' + e.getY() + ')'); 

    } 

    public static void main(String[] args){ 
     //Create and set up the window. 
     JFrame frame = new JFrame("MouseMotionEventDemo"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     //Create and set up the content pane. 
     JComponent newContentPane = new ReactPanel(); 
     newContentPane.setOpaque(true); //content panes must be opaque 
     frame.setContentPane(newContentPane); 

     //Display the window. 
     frame.pack(); 
     frame.setVisible(true); 
    } 
} 
संबंधित मुद्दे