1

JPanel内で特定のテキスト文字列をカーソルに追従させようとしています。JPanel を拡張し、MouseMotionListener を実装するクラスを作成しました。コードが機能していないようです。テキストは表示されますが、カーソルに追従しません。

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

2 に答える 2

4

リスナーをパネルに追加する必要があります。

次のコンストラクターを挿入します。

public TheJPanel() {
    this.addMouseMotionListener(this);
}
于 2012-11-15T15:06:55.167 に答える
1

追加する必要があると思います:

addMouseListener(y);
addMouseMotionListener(y);
  • さらに、これを別のクラスでコーディングする方が良いと思います。MouseMotionListener を実装する代わりに、MouseInputAdapter を拡張することもできます。
于 2012-11-15T15:07:54.523 に答える