Javafx中如何实现点击Scene任意区域都在Pane内显示坐标
修改方案
你原来的代码只给Text组件绑定了点击事件,所以只有点击Text区域才会触发坐标更新,只要做两处调整即可实现需求:
- 将鼠标点击监听器绑定到Scene对象上,覆盖整个场景的点击事件
- 坐标获取改用
getSceneX()/getSceneY(),拿到相对于整个场景的坐标值
修改后的完整代码如下:
@Override public void start(Stage primaryStage) { Pane pane = new Pane(); Text text = new Text(50, 50, "Hello"); pane.getChildren().addAll(text); Scene scene = new Scene(pane, 300, 200); // 给整个场景绑定点击监听器 scene.setOnMouseClicked(e -> { text.setText(e.getSceneX() + ", " + e.getSceneY()); }); primaryStage.setTitle("MouseClicker"); primaryStage.setScene(scene); primaryStage.show(); }
如果需要展示坐标保留指定小数位数,也可以用String.format("%.1f, %.1f", e.getSceneX(), e.getSceneY())格式化输出内容。
内容的提问来源于stack exchange,提问作者Ovted Gaming
相关产品推荐
相关产品推荐

