📅  最后修改于: 2023-12-03 15:31:34.399000             🧑  作者: Mango
在 Java 程序中,获取鼠标坐标是常见的需求。本文介绍下如何通过 Java 代码获取鼠标坐标。
在 Java 中,AWT 提供了 MouseEvent
类来处理鼠标事件。我们可以通过 MouseEvent
获取鼠标坐标。
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
public class MouseCoordinates implements MouseMotionListener {
public static void main(String[] args) {
Frame frame = new Frame("Mouse Coordinates");
Label label = new Label();
frame.add(label);
frame.addMouseMotionListener(new MouseCoordinates(label));
frame.setSize(300, 300);
frame.setVisible(true);
}
private Label label;
public MouseCoordinates(Label label) {
this.label = label;
}
@Override
public void mouseDragged(MouseEvent e) {
printCoordinates(e);
}
@Override
public void mouseMoved(MouseEvent e) {
printCoordinates(e);
}
private void printCoordinates(MouseEvent e) {
label.setText("X: " + e.getX() + " Y: " + e.getY());
}
}
该示例代码创建了一个 Frame
窗口,并在窗口上添加一个 Label
组件,当鼠标移动或拖动时,就会更新 Label
的文本为当前鼠标坐标。
需要注意的是,为了获取鼠标坐标,我们需要添加鼠标移动监听器 MouseMotionListener
,并实现 mouseMoved
和 mouseDragged
方法,在方法中通过 MouseEvent
对象获取坐标信息。
在 JavaFX 程序中,可以通过 MouseEvent
和 Scene
对象获取鼠标坐标。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class MouseCoordinates extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
Label label = new Label();
StackPane root = new StackPane(label);
Scene scene = new Scene(root, 300, 300);
scene.addEventFilter(MouseEvent.MOUSE_MOVED, e -> {
double x = e.getX(); // 鼠标点击位置的 x 坐标
double y = e.getY(); // 鼠标点击位置的 y 坐标
label.setText("X: " + x + " Y: " + y);
});
primaryStage.setScene(scene);
primaryStage.show();
}
}
该示例代码创建了一个基本的 JavaFX 应用程序,并在场景 Scene
上添加 MouseEvent
监听器,通过 MouseEvent
对象获取鼠标坐标。
需要注意的是,这里的事件处理程序是使用匿名内部类实现的。在事件发生时,我们可以通过 MouseEvent
对象访问鼠标位置的 getX()
和 getY()
方法,然后将坐标信息更新到 Label
组件上。
通过以上示例,我们可以看到 Java 中获取鼠标坐标的两种方式:AWT 和 JavaFX。这两种方式都可以方便地访问鼠标坐标信息,并根据自己的需求更新 GUI 中的组件。