自学内容网 自学内容网

Java语言程序设计基础篇_编程练习题**15.15 (几何问题:添加或删除点)

**15.15 (几何问题:添加或删除点)
  • 请编写一个程序,让用户在面板上单击以自动创建或移去点(参见15-28a)。当用户左击鼠标时(主按钮),就创建一个点并且显示在鼠标的位置,用户还可以将鼠标移到一个点上,然后右击鼠标(次按钮)以移去这个点

答题思路:

  1. 新建一个面板Pane(),和一个Circle类型的ArrayList
  2. 为面板注册一个事件(鼠标点击:setOnMouseClicked)
  3. 如果鼠标点的是左键:e.getButton() == MouseButton.PRIMARY,则新建一个圆,同时添加到布局和ArrayList中
  4. 如果点的是右键,创建一个迭代器iterator用于遍历存储所有圆圈的ArrayList<Circle>列表,使用contains()方法检查鼠标位置是否在圆圈内, 如果是,那么同时在List和Pane中删除圆圈
  • 代码展示:编程练习题15_15AddOrDeletePoints.java 
package chapter_15;

import java.util.ArrayList;
import java.util.Iterator;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.input.MouseButton;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;

public class 编程练习题15_15AddOrDeletePoints extends Application{
@Override
public void start(Stage primaryStage) throws Exception {
Pane pane = new Pane();
ArrayList<Circle> list = new ArrayList<>();
pane.setOnMouseClicked(e ->{
double x = e.getX();
double y = e.getY();
if(e.getButton() == MouseButton.PRIMARY) {
Circle circle = new Circle(x,y,10);
circle.setFill(Color.WHITE);
circle.setStroke(Color.BLACK);
pane.getChildren().add(circle);
list.add(circle);
}
 else if (e.getButton() == MouseButton.SECONDARY) {
                Iterator<Circle> iterator = list.iterator();
                while (iterator.hasNext()) {
                    Circle c = iterator.next();
                    if (c.contains(x, y)) {
                        pane.getChildren().remove(c);
                        iterator.remove(); // 使用迭代器的remove方法
                    }
                }
            }
});
Scene scene = new Scene(pane, 300, 300);
        primaryStage.setTitle("编程练习题15_15AddOrDeletePoints");
        primaryStage.setScene(scene);
        primaryStage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
  • 结果展示

 


原文地址:https://blog.csdn.net/2301_78998594/article/details/140603477

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!