2012-11-15 25 views
1

我想讓一個特定的文本字符串跟在JPanel內部的光標處。我創建了一個擴展JPanel並實現MouseMotionListener的類。代碼似乎不起作用。文本顯示,但不跟隨光標。讓文本在JPanel內跟着你的光標

package followthemouse; 

import java.awt.Graphics; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseMotionListener; 
import javax.swing.JPanel; 

public class TheJPanel extends JPanel implements MouseMotionListener { 

    private int x = 20; 
    private int y = 20; 

    @Override 
    public void paintComponent(Graphics g) 
    { 
     super.paintComponent(g); 
     g.drawString("I love your cursor!", x, y); 

    } 


    @Override 
    public void mouseMoved (MouseEvent me) 
    { 
     x = me.getX(); 
     y = me.getY(); 
     repaint(); 
    } 

    @Override 
    public void mouseDragged (MouseEvent me) 
    { 

    } 


} 

這裏是什麼在主要功能:

package followthemouse; 

import javax.swing.JFrame; 

/** 
* 
* @author Vikram 
*/ 
public class FollowTheMouse extends JFrame{ 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 

     TheJPanel y = new TheJPanel(); 
     JFrame x = new JFrame("The TITLE"); 
     x.add(y); 
     x.setSize(400, 400); 
     x.setVisible(true); 

    } 
} 

我在做什麼錯?

回答

4

您應該將偵聽器添加到面板。

插入下面的構造:

public TheJPanel() { 
    this.addMouseMotionListener(this); 
} 
1

我認爲你需要添加:

addMouseListener(y); 
addMouseMotionListener(y); 
  • 加在一個單獨的類編碼,這將是更好的,我認爲。您也可以擴展MouseInputAdapter而不是實現MouseMotionListener。
+0

+1。我正在學習基礎知識,並且在一個單獨的內部類中編碼肯定會更有效率。 – Vikram