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);
	}
}
  • 结果展示
相关推荐
ldj202012 分钟前
SpringBoot为什么使用new RuntimeException() 来获取调用栈?
java·spring boot·后端
超龄超能程序猿12 分钟前
Spring 应用中 Swagger 2.0 迁移 OpenAPI 3.0 详解:配置、注解与实践
java·spring boot·后端·spring·spring cloud
风象南24 分钟前
SpringBoot配置属性热更新的轻量级实现
java·spring boot·后端
洛阳泰山25 分钟前
Spring Boot 整合 Nacos 实战教程:服务注册发现与配置中心详解
java·spring boot·后端·nacos
Y40900125 分钟前
C语言转Java语言,相同与相异之处
java·c语言·开发语言·笔记
YuTaoShao27 分钟前
【LeetCode 热题 100】994. 腐烂的橘子——BFS
java·linux·算法·leetcode·宽度优先
布朗克16827 分钟前
java常见的jvm内存分析工具
java·jvm·数据库
都叫我大帅哥2 小时前
深入浅出 Resilience4j:Java 微服务的“免疫系统”实战指南
java·spring cloud
Cao_Shixin攻城狮4 小时前
Flutter运行Android项目时显示java版本不兼容(Unsupported class file major version 65)的处理
android·java·flutter
Dcs6 小时前
还在用 Arrays.hashCode?Java 自己也能写出更快的版本!
java