Java语言程序设计基础篇_编程练习题**15.18(使用鼠标来移动一个矩形)

**15.18(使用鼠标来移动一个矩形)
  • 请编写一个程序显示一个矩形。可以使用鼠标单击矩形内部并且拖动(即按住鼠标移动)矩形到鼠标的位置。鼠标点成为矩形的中央
  • 习题思路:
  1. 新建一个面板Pane(),新建一个Rectangle()

  2. 为Rectangle注册一个事件(鼠标拖动:setOnMouseDragged())

  3. 设置Rectangle的xy为当前鼠标位置的(mouseX-Rw/2.0),(mouseY-Rh/2.0),Rw为矩形的宽,Rh为矩形的高。因为矩形本身的xy坐标是从左上角开始的,所以要减去宽与高的一半。

代码示例:编程练习题15_18UseMouseMoveRectangle.java

java 复制代码
package chapter_15;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class 编程练习题15_18UseMouseMoveRectangle extends Application{
	@Override
	public void start(Stage primaryStage) throws Exception {
		Pane pane = new Pane();
		Rectangle rectangle = new Rectangle(120, 130, 60, 40);
		pane.getChildren().add(rectangle);
		
		rectangle.setOnMouseDragged(e ->{
			double mouseX = e.getX();
			double mouseY = e.getY();
			double rw = rectangle.getWidth();
			double rh = rectangle.getHeight();
			double x = mouseX-rw/2.0;
			double y = mouseY-rh/2.0;
			rectangle.setX(x);
			rectangle.setY(y);
		});
		
		Scene scene = new Scene(pane, 300, 300);
        primaryStage.setTitle("编程练习题15_18UseMouseMoveRectangle");
        primaryStage.setScene(scene);
        primaryStage.show();
	}
	public static void main(String[] args) {
		Application.launch(args);
	}
}
  • 结果展示
相关推荐
Rabitebla7 分钟前
【Linux操作系统】进程篇(十一):进程程序替换——从底层原理到 exec 函数族
linux·服务器·c++·笔记·学习·算法
叼烟扛炮1 小时前
[LangChain] 学习笔记(03):打破失忆症——对话机制与上下文管理
java·前端·javascript·笔记·学习·langchain
文丑颜不良啊1 小时前
LeetCode2061~2080题目解析
java·leetcode
旖旎夜光1 小时前
【C++ 基础入门】类和对象(下):初始化列表、static 成员、友元与内部类
c++·笔记·学习
LONGZHIQIN1 小时前
STM32学习笔记
笔记·stm32·学习·arm
特立独行的猫A2 小时前
13MB 单文件、一条命令变服务:把仓颉写的 cjh 内嵌进你的应用,当它的 AI 大脑
java·后端·python
Brookty2 小时前
Java博客项目实战|工程环境与构建:工程目录、PowerShell命令调用与JDK/IDEA/Maven工作机制
java·项目实战
redtank20002 小时前
纯血鸿蒙小工具三件套实测:弹幕手持、爱记录与仓库管理软件
学习·华为·智能手机·harmonyos
§ꦿCFོ༉2 小时前
嵌入式八股文—C语言入门学习(二)
c语言·学习·嵌入式·编程语言
Nerd(BUG版)2 小时前
KMP学习day5--Kotlin Flow异步流基础
开发语言·学习·kotlin