2011-12-08 21 views
5

マウスイベントが正常に機能することに問題があります。私はJScrollPaneにあるJLayeredPaneの中にJPanelを持っています。確かに、私はかなりスイングに取り組んでいますが、本質的に、私はJPanelをマウスの動きに反応させたいのですが、動作させることができませんでした。JPanel内でマウスが移動したイベント

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

JPanelオブジェクトをMouseListenerに登録していますか? のような何か:

あなたはScrollPaneのかのlayeredPaneにするMouseListenerを追加する必要が
public CellHighlighter(){ 
     this.addMouseMotionListener(this); 
    } 

それとも?

+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); 
    } 
} 
関連する問題