Java 跟踪鼠标移动
我试图制作一个程序来跟踪鼠标移动,并将鼠标的当前点显示到标签中,但当我运行代码时,它在Jlabel中什么也没有给我 我使用的代码如下:Java 跟踪鼠标移动,java,swing,jlabel,mouselistener,Java,Swing,Jlabel,Mouselistener,我试图制作一个程序来跟踪鼠标移动,并将鼠标的当前点显示到标签中,但当我运行代码时,它在Jlabel中什么也没有给我 我使用的代码如下: public class pr1 extends JFrame implements MouseMotionListener { String Name; JLabel PositionLabel; Container cp; float XPosition; float YPosition; Point Point;
public class pr1 extends JFrame implements MouseMotionListener
{
String Name;
JLabel PositionLabel;
Container cp;
float XPosition;
float YPosition;
Point Point;
public pr1 (String Name)
{
super (Name);
setLayout(new FlowLayout ());
setBackground(Color.LIGHT_GRAY);
setSize(500, 500);
setVisible(true);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
PositionLabel = new JLabel ("The mouse now at the point : " );
cp = getContentPane();
cp.add (PositionLabel, BorderLayout.SOUTH);
}
@Override
public void mouseMoved(MouseEvent e)
{
Point = e.getPoint();
PositionLabel.setText("The mouse now at the point : " + Point );
}
@Override
public void mouseDragged(MouseEvent e)
{
throw new UnsupportedOperationException("Not supported yet.");
}
}
必须使用addMouseMotionListener()注册组件。
在构造函数中添加:
addMouseMotionListener(this);
您可以在以下位置看到一个示例:
前几天我也有同样的问题。利用方法
myComponent.getMousePosition()
获取鼠标的位置(在您的情况下,您可能希望将JPanel添加到框架中,然后将JLabel添加到面板中)
您可以将该方法与计时器一起使用:
Timer t = new Timer(1, e->{
if(myPanel.getMousePosition() != null)
myLable.setText("The mouse now at point: " + myPanel.getMousePosition().getX() + ", " + myPanel.getMousePosition().getY());
});
t.start();
请注意,如果鼠标不在组件上,
getMousePosition()
将返回null
Leet_Falcon的答案对我有效,请尝试。这比向帧中添加JPanel并使用计时器要容易得多:)