Java 在jPanel上显示鼠标坐标
我想在移动鼠标时使用drawString()方法显示鼠标坐标。这是我目前的代码。这适用于mouseClicked(MouseEvent e)方法,但不适用于mouseMoved(MouseEvent e)方法。有人能帮我吗Java 在jPanel上显示鼠标坐标,java,swing,jpanel,mouseevent,paint,Java,Swing,Jpanel,Mouseevent,Paint,我想在移动鼠标时使用drawString()方法显示鼠标坐标。这是我目前的代码。这适用于mouseClicked(MouseEvent e)方法,但不适用于mouseMoved(MouseEvent e)方法。有人能帮我吗 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Graphics; import java.awt.event.MouseAdapter; import java.awt.event.M
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Test extends JFrame {
public Test() {
PaintLocaion paintlocation = new PaintLocaion();
paintlocation.setSize(400,300);
add(paintlocation, BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new Test().setVisible(true);
}
private class PaintLocaion extends JPanel {
int x, y;
public PaintLocaion() {
addMouseListener(new MouseAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
x = e.getX();
y = e.getY();
repaint();
}
});
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(Color.white);
g.drawString(x + ", " + y, 10, 10);
}
}
}
您需要注册一个
MouseMotionListener
,而不是注册一个MouseMotionListener
public PaintLocaion() {
addMouseMotionListener(new MouseAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
x = e.getX();
y = e.getY();
repaint();
}
});
}
有关更多详细信息,请参阅
根据mKorbel的评论更新
重写paint
时会出现问题,虽然这似乎是合乎逻辑的做法,但当发生重新绘制时,由paint
方法更新的区域可能不会更新,并且最终可能会出现一些奇怪的绘制问题
建议改用paintComponent
如果您试图绘制顶部组件,您可以考虑使用玻璃窗格或<代码> JXLead /Cudio> JLead 而不是
请参阅了解有关绘制过程的更多详细信息。有关玻璃窗格和的详细信息,而不是注册
鼠标侦听器
,您需要注册鼠标表情侦听器
public PaintLocaion() {
addMouseMotionListener(new MouseAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
x = e.getX();
y = e.getY();
repaint();
}
});
}
有关更多详细信息,请参阅
根据mKorbel的评论更新
重写paint
时会出现问题,虽然这似乎是合乎逻辑的做法,但当发生重新绘制时,由paint
方法更新的区域可能不会更新,并且最终可能会出现一些奇怪的绘制问题
建议改用paintComponent
如果您试图绘制顶部组件,您可以考虑使用玻璃窗格或<代码> JXLead /Cudio> JLead 而不是
请参阅了解有关绘制过程的更多详细信息。有关玻璃窗格和的详细信息,您可以尝试使用
MouseMotionListener
您可以尝试使用MouseMotionListener
@Lahiru Kavinda并使用paintComponent@mKorbel我尽量不向下滚动那么远:P@LahiruKavinda和repace油漆()具有paintComponent@mKorbel我尽量不向下滚动那么远:P