在 Java 中在 JFrame 上显示鼠标坐标
Display mouse coordinates on JFrame in Java
此代码创建一个框架屏幕,并在用户单击框架上的任意位置时生成一个 mouseEvent。但是,我希望代码在用户单击鼠标按钮的任何位置获取光标坐标,而不是仅获取 JFrame 右上角的坐标。我不确定如何完成此操作。任何帮助将不胜感激。
import java.awt.Color;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Hw2MouseEventController extends JFrame {
public Hw2MouseEventController() {
MouseClkd mouse = new MouseClkd();
setLayout(new GridLayout());
add(mouse);
}
public static void main(String[] args) {
Hw2MouseEventController frame = new Hw2MouseEventController();
frame.setTitle("Mouse Event Controller");
frame.setLocation(450, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(450, 450);
frame.setVisible(true);
}
static class MouseClkd extends JPanel {
private int x;
private int y;
public MouseClkd() {
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
x = e.getX();
y = e.getY();
repaint();
}
});
}
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);
}
}}
I just want to display coordinates at clicked place when user clicks the mouse.
这就是正在发生的事情。您将 MouseListener 添加到面板中,因此鼠标点击相对于面板。
如果希望鼠标点击相对于frame,则需要在frame中添加MouseListener。
或者您可能只需要更改:
//g.drawString("(" + x + "," + y + ")", 10, 10);
g.drawString("(" + x + "," + y + ")", x, y);
此代码创建一个框架屏幕,并在用户单击框架上的任意位置时生成一个 mouseEvent。但是,我希望代码在用户单击鼠标按钮的任何位置获取光标坐标,而不是仅获取 JFrame 右上角的坐标。我不确定如何完成此操作。任何帮助将不胜感激。
import java.awt.Color;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Hw2MouseEventController extends JFrame {
public Hw2MouseEventController() {
MouseClkd mouse = new MouseClkd();
setLayout(new GridLayout());
add(mouse);
}
public static void main(String[] args) {
Hw2MouseEventController frame = new Hw2MouseEventController();
frame.setTitle("Mouse Event Controller");
frame.setLocation(450, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(450, 450);
frame.setVisible(true);
}
static class MouseClkd extends JPanel {
private int x;
private int y;
public MouseClkd() {
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
x = e.getX();
y = e.getY();
repaint();
}
});
}
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);
}
}}
I just want to display coordinates at clicked place when user clicks the mouse.
这就是正在发生的事情。您将 MouseListener 添加到面板中,因此鼠标点击相对于面板。
如果希望鼠标点击相对于frame,则需要在frame中添加MouseListener。
或者您可能只需要更改:
//g.drawString("(" + x + "," + y + ")", 10, 10);
g.drawString("(" + x + "," + y + ")", x, y);