Java语言程序设计基础篇_编程练习题*16.2 (选择几何图形)

news2024/9/24 11:29:40

目录

题目:*16.2 (选择几何图形)

习题思路

代码示例 

 结果展示


题目:*16.2 (选择几何图形)

    编写一个绘制各种几何图形的程序,如图16-36b所示。用户从单选按钮中选择一个几何图形 ,并且使用复选框指定是否被填充

  • 习题思路
  1. 新建一个Pane,分别创建Circle、Rectangle、Ellipse,设置好参数但不添加到Pane中
  2. 新建一个HBox,创建三个RadioButton,和一个CheckBox,把RadioButton绑定在一个组中,当单选按钮被选择时清除Pane上的节点,把对应的图形添加在Pane上,如果复选框被勾选,则填充节点的颜色(填充Pane中的第一个节点即可)
  3. 新建一个BorderPane,将Pane设置在在中心,将HBox设置在底部,把Scene的参数设为BorderPane
代码示例: 

编程练习题16_2SelectGeometry.java 

package chapter_16;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.CheckBox;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Ellipse;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class 编程练习题16_2SelectGeometry extends Application{
	@Override
	public void start(Stage primaryStage) throws Exception {
		Pane pane = new Pane();
		pane.setStyle("-fx-border-color: Black");
		double x = 200;
		double y = 100;
		Circle circle = new Circle(x, y,20);
		Rectangle rectangle = new Rectangle(x-50,y-20,100, 40);
		Ellipse ellipse = new Ellipse(x, y, 60, 30);
		circle.setFill(Color.TRANSPARENT);
		circle.setStroke(Color.BLACK);
		rectangle.setFill(Color.TRANSPARENT);
		rectangle.setStroke(Color.BLACK);
		ellipse.setFill(Color.TRANSPARENT);
		ellipse.setStroke(Color.BLACK);
		
		HBox hBox = new HBox(20);
		hBox.setPadding(new Insets(5, 5, 5, 5));
		hBox.setAlignment(Pos.CENTER);
		RadioButton rbCircle = new RadioButton("Circle");
		RadioButton rbRectangle = new RadioButton("Rectangle");
		RadioButton rbEllipse = new RadioButton("Ellipse");
		ToggleGroup group = new ToggleGroup();
		rbCircle.setToggleGroup(group);
		rbRectangle.setToggleGroup(group);
		rbEllipse.setToggleGroup(group);
		CheckBox chkFill = new CheckBox("Fill");
		hBox.getChildren().addAll(rbCircle, rbRectangle, rbEllipse, chkFill);
		
		chkFill.setOnAction(e ->{
			if(chkFill.isSelected()&& (rbCircle.isSelected()||rbRectangle.isSelected()||rbEllipse.isSelected())) {
				pane.getChildren().get(0).setStyle("-fx-fill: black");
			}
			if(!chkFill.isSelected()&& (rbCircle.isSelected()||rbRectangle.isSelected()||rbEllipse.isSelected())) {
				pane.getChildren().get(0).setStyle(null);
			}
		});
		rbCircle.setOnAction(e ->{
			pane.getChildren().clear();
			chkFill.setSelected(false);
			circle.setStyle(null);
			pane.getChildren().add(circle);
		});
		rbRectangle.setOnAction(e ->{
			pane.getChildren().clear();
			chkFill.setSelected(false);
			rectangle.setStyle(null);
			pane.getChildren().add(rectangle);
		});
		
		rbEllipse.setOnAction(e ->{
			pane.getChildren().clear();
			chkFill.setSelected(false);
			ellipse.setStyle(null);
			pane.getChildren().add(ellipse);
		});
		
		BorderPane borderPane = new BorderPane();
		borderPane.setCenter(pane);
		borderPane.setBottom(hBox);
		
		Scene scene = new Scene(borderPane, 400, 226);
		primaryStage.setTitle("编程练习题16_2SelectGeometry");
		primaryStage.setScene(scene);
		primaryStage.show();
	}
	public static void main(String[] args) {
		Application.launch(args);
	}
}
  •  结果展示

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1981839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DDR4的单、双DIE兼容,不做仿真行不行?

高速先生成员--姜杰 地址信号一驱五的DDR4拓扑很常见,可是,一驱五拓扑还要求单DIE、双DIE颗粒兼容的你有见过吗? 案例开讲之前,先简单介绍下DIE,英语学的好的同学都知道这个词的意思不太吉利,不过&#xff…

使用vLLM在一个基座模型上部署多个lora适配器

我们都知道,使用LoRA适配器可以定制大型语言模型(LLM)。并且适配器必须加载在在LLM之上,对于某些应用程序,为用户提供多个适配器可能很有用。例如,一个适配器可以执行函数调用,而另一个适配器可以执行非常不同的任务&a…

SpringBoot+Vue 简单小文章项目开发全过程

文章目录 一、项目介绍二、需求设计三、数据库设计四、项目构建项目技术选型:构建项目说明:项目架构mavenMySQLRedis 五、项目开发:项目开发思路:项目开发过程:1. 导入文件包/新建项目2. 新建子模块:common模块pojo模块server模块…

数据采集与预处理【大数据导论】

各位大佬好 ,这里是阿川的博客,祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 数据采集与预处理前 必看 【大数据导论】—大数据序…

Linux 中的特殊文件权限:SUID、GUID 和 Sticky

注: 机翻,未校。 Special File Permissions in Linux: SUID, GUID and Sticky Bit You see an s instead of x in the file permissions? Linux has some special file permissions called SUID, GUID and Sticky Bit. Know more about them. 在文件权…

了解MVCC

概念 MVCC,全称Multi-Version Concurrency Control,即多版本并发控制,是一种并发控制的方法,维护一个数据的多个版本,使得读写操作没有冲突,快照读为MySQL实现MVCC提供了一个非阻塞读功能。MVCC的具体实现…

C++新手入门学习教程(完整版)

以下教程覆盖了 C 学习的各个方面,适合初学者循序渐进地学习。学习过程中,建议初学者多做练习和项目,以加深对理论知识的理解。希望这个教程能为你提供一个清晰的学习路径。 目录 第一章:C 简介 1.1 C 的历史与演变 1.2 C 的特…

低代码: 系统开发准备之确定一般开发流程,需求分析,技术架构

概述 低代码系统开发之前,我们首先要进行一些准备我们首先知道我们软件开发的一般流程同时,我们还要知道,我们整个系统平台的需求如何之后,我们要基于需求进行设计,包含UI设计与系统架构设计 一般开发流程 系统开发…

数据库典型例题1-画ER图

1.question: solution: 2.画图步骤&#xff1a; 1.圈实体 2.写出实体间关系&#xff0c;确定实体画图位置 3.圈出每个实体的属性 4.画图&#xff0c;注意特殊实体和属性 3.注意点 <1 弱实体 弱实体&#xff1a;一个实体必须依赖于另一个实体存在---->实体双线菱形弱…

centos Python3.6升级3.8

CentOS系统上升级Python3.6到3.8版本。 步骤 1. 更新系统 在开始升级Python之前&#xff0c;首先需要确保系统是最新的。可以使用以下命令更新CentOS系统&#xff1a; sudo yum update 2. 安装依赖项 升级Python之前&#xff0c;需要安装一些依赖项。运行以下命令安装这些依赖…

Common Lisp精解【1】

文章目录 概述什么是 Common Lisp概念历史 应用领域1. 人工智能2. 自然语言处理3. 数据分析4. 系统编程5. Web开发6. 教育与研究7. 其他领域 基础 参考文献 概述 以下内容来自文心一言的自动生成 什么是 Common Lisp Common Lisp&#xff08;缩写为CL&#xff09;是Lisp编程语…

Unity使用Modbus协议

最近一直在工业领域干活&#xff0c;学习下Modbus协议&#xff0c;这里做个记录&#xff0c;理解不对的地方希望大佬指出修正。 一、先上测试工具和Unity脚本。 1.测试工具使用的 Modsim32 2.Unity测试脚本如下 /* 0x01&#xff1a;读线圈 0x05&#xff1a;写单个线圈 0x0F…

计算机组成原理 —— 指令流水线影响因素分类

计算机组成原理 —— 指令流水线影响因素分类 结构冒险结构冒险的原因 数据冒险&#xff08;同步&#xff09;数据旁路的原理数据旁路的类型数据旁路的例子 控制冒险控制冒险的类型控制冒险的例子解决控制冒险的方法示例分析分支预测的策略 超标量和超流水超标量&#xff08;Su…

关于计算机的思考

本文是《Python入门经典以解决计算问题为导向的Python编程实践》一书中第一部分“关于计算机的思考”的笔记&#xff0c;后附上思维导图。 关于计算机的思考 一、为什么要研究计算机科学1、重要性2、“计算机科学”更强调计算而不是编程3、从”通过编程解决问题“的思路出发&a…

RPC通信的简单流程

远程调用者假设需要调用Login方法&#xff0c;将调用的信息通过muduo库&#xff0c;同时进行了序列化和反序列化&#xff0c;发送到Rpcprovider上&#xff0c;RpcProvider通过对象和方法表来确定需要调用哪个服务对象的哪个方法。 UserRpcServiceRpc和UseRpcServiceRpcStub是继…

去中心化社交:探讨Facebook在区块链平台上的实践

随着区块链技术的崛起&#xff0c;社交平台也面临着前所未有的变革。作为全球最大的社交平台之一&#xff0c;Facebook&#xff08;现名Meta Platforms&#xff09;正在积极探索如何将区块链技术融入其平台&#xff0c;以引领去中心化社交的新时代。本文将从不同角度探讨Facebo…

leaflet.motion台风路径动画绘制

在气象领域中&#xff0c;对台风的准确可视化呈现对于灾害预警和防范具有重要意义。本文将深入探讨一段使用 JavaScript 实现台风可视化功能的代码。原本只是简单的绘制台风的路径&#xff0c;但是后面的需求要求显示台风各个历史节点的动画绘制&#xff0c;于是难度增加了&…

《安全历史第4讲——从古代驿站体系看软件安全管控》

在古代&#xff0c;车、马都很慢&#xff0c;信息传递很不顺畅&#xff0c;中央的政令又是如何传达至地方的呢&#xff1f;实际上&#xff0c;很多朝代都有专门的驿站制度&#xff0c;可以保障全国各地的信息传递&#xff0c;对于维护统治和稳定有着关键作用。 若将国家比作一个…

OZON刚需产品哪些好卖,OZON刚需热卖产品

OZON平台上的刚需热卖产品涵盖了多个领域&#xff0c;这些产品通常能够满足消费者的基本需求或提升生活品质。以下是一些在OZON平台上表现良好的刚需热卖产品类别及其特点&#xff01; OZON刚需热卖产品地址&#xff1a;D。DDqbt。COm/74rDTop1 防蚊修复网 Скотч сет…

二次注入(2018网鼎杯comment)

一、2018网鼎杯comment 该题主要考察二次注入 1.二次注入概念&#xff1a; 攻击者构造恶意的数据并存储在数据库后&#xff0c;恶意数据被读取并进入到SQL查询语句所导致的注入。防御者可能在用户输入恶意数据时对其中的特殊字符进行了转义处理&#xff0c;但在恶意数据插入…