JavaFX作业

前言:

        在写这个作业之前,尝试在JavaFX中添加全局快捷键,测试了大概5个小时,到处找教程换版本,结果最后还是没找到支持Java8以上的(也有可能是我自己的问题),最后只能退而求其次,用jintellitype这个库来在原生swing里面添加了全局快捷键,算是圆了我对SAO Utils的一个执念吧,虽然实际上相差甚远。

        准备顶着数值分析考试和六级的压力(其实六级也没什么压力,主要室友太卷六级了。。人各有志,但是数值分析真不会啊)把这次的Java作业做了,虽然我明显感觉老师进度太快了,我群里面大三的都才学到这里,。。这才第七周啊,而且老师我只是大二啊,你这,,你这,,太夸张了这速度,还有就是讲课讲软件开发这块的注意事项,我个人觉得不如先确保我能开发一个软件比较好,。好了,废话就到这里。

作业:

1.安装向导

        提供一个setup.jar,模拟常见的软件安装交互特性。

        主要功能:上一步下一步的页面切换,按钮交互响应,页面创建

2.广播

        制作一个可以向子窗体同步信息的父窗体,内容由文本框输入,父窗体上放一个广播按钮和一个子窗体创建按钮,广播按钮点击后可以让父窗体输入文本显示到所有子窗体上,子窗体创建按钮点击后创建新的窗体(点击一次创建一次)。

        主要功能:文本输入,信息同步,按钮交互响应,窗体创建

3.监控

        制作一个可以收集自己创建的子窗体信息的父窗体,父窗体上放一个子窗体创建按钮,点击后创建新的窗体(点击一次创建一次),每个子窗体上都有一个按钮,点击后主窗体显示各窗体按钮各自的点击次数以及总和。

        主要功能:窗体创建,信息传递,按钮交互响应,计数计算

4.双向实时通讯

        创建一个主窗体和一个从窗体,主窗体上显示“已完成了   %”,从窗体上显示一个进度条(初始为0,在下方显示百分比)和两个按钮,一个增加按钮一个减少按钮,点击增加按钮,进度条增加1%,点击减少,进度条减少1%,从窗体的进度条和主窗体显示的  %相关联,同样的,主窗体上也有这两个按键。

        主要功能:按钮响应,信息双向同步,计数

5.微信群模拟

        用JavaFX模拟微信群聊功能。

        程序运行时可以动态创建多个窗体,在创建窗体时,选择一个群加入,每个窗体代表一个人,使用窗体背景色区分开各个群,在群内部,群成员发送的消息只有群成员间能看到。

完成(慢慢更新ing)

        1.详解有时间写

package com.example.test10;import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;public class SetupWizard extends Application {private Stage stage;private int currentPage;private VBox pageContainer;private final Button backButton = new Button("Back");private final Button nextButton = new Button("Next");public static void main(String[] args) {launch(args);}@Overridepublic void start(Stage primaryStage) {stage = primaryStage;stage.setTitle("Setup Wizard");BorderPane root = new BorderPane();Scene scene = new Scene(root, 400, 300);// 创建页面容器pageContainer = new VBox();pageContainer.setPadding(new Insets(20));pageContainer.setAlignment(Pos.CENTER_LEFT);// 创建页面VBox page1 = createPage1();VBox page2 = createPage2();VBox page3 = createPage3();// 添加页面到容器pageContainer.getChildren().addAll(page1, page2, page3);// 设置当前页面currentPage = 0;showCurrentPage();// 创建按钮容器HBox buttonContainer = new HBox();buttonContainer.setPadding(new Insets(20));buttonContainer.setAlignment(Pos.BOTTOM_RIGHT);// 设置布局HBox.setMargin(backButton, new Insets(0, 10, 0, 0));backButton.setOnAction(event -> showPreviousPage());nextButton.setOnAction(event -> showNextPage());buttonContainer.getChildren().addAll(backButton, nextButton);root.setCenter(pageContainer);root.setBottom(buttonContainer);nextButton.setDisable(true);stage.setScene(scene);stage.show();}private VBox createPage1() {VBox page = new VBox();page.setSpacing(10);Label label = new Label("Please read and accept the agreement:");CheckBox checkBox = new CheckBox("I agree to the above terms and conditions");checkBox.setOnAction(event -> nextButton.setDisable(!checkBox.isSelected()));page.getChildren().addAll(label, checkBox);return page;}private VBox createPage2() {VBox page = new VBox();page.setSpacing(10);Label label = new Label("Please enter the installation directory:");TextField directoryField = new TextField();directoryField.textProperty().addListener((observable, oldValue, newValue) ->nextButton.setDisable(newValue.isEmpty()));page.getChildren().addAll(label, directoryField);return page;}private VBox createPage3() {VBox page = new VBox();page.setSpacing(10);Label label = new Label("Please select an option:");Button exitButton = new Button("Exit");exitButton.setOnAction(event -> stage.close());HBox buttonContainer = new HBox();buttonContainer.setAlignment(Pos.BOTTOM_RIGHT);buttonContainer.getChildren().addAll(backButton, exitButton);page.getChildren().addAll(label, buttonContainer);return page;}private void showPreviousPage() {if (currentPage > 0) {currentPage--;showCurrentPage();}}private void showNextPage() {if (currentPage < pageContainer.getChildren().size() - 1) {currentPage++;showCurrentPage();nextButton.setDisable(true);}}private void showCurrentPage() {pageContainer.getChildren().forEach(page -> page.setVisible(false));pageContainer.getChildren().get(currentPage).setVisible(true);backButton.setDisable(currentPage == 0);nextButton.setDisable(currentPage == pageContainer.getChildren().size() - 1);}
}

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

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

相关文章

手写数字识别--神经网络实验

实验源码自取&#xff1a; 我自己搞的代码&#xff0c;预测精度才94% 神经网络实验报告源码.zip - 蓝奏云 老师给的实验源码答案和资料&#xff0c;预测精度高达99% 深度学习实验报告.zip - 蓝奏云 上深度学习的课程&#xff0c;老师布置了一个经典的实验报告&#xff0c;我做…

libpcap之数据分流

当前系统都是多核系统&#xff0c;为了充分利用多核优势&#xff0c;数据包可以在底层就进行分流&#xff0c;可以通过多线程/多进程对同一个接口的数据进行并行的处理。 一、实验 一个server/client程序一个简单的抓包程序&#xff0c;抓取server/client之间的通信数据 1.1 …

如何利用Python实现分词和NER的Web服务

大家都知道python在数据处理、数据分析和机器学习等方面的强大之处&#xff0c;那么如何使用Python实现Web方式的HTTP应用和服务呢&#xff0c;其实有很多种方式&#xff0c;比如利用gradio、streamlit实现web应用&#xff0c;利用FastApi实现web服务等等&#xff0c;具体详见之…

【蓝桥杯 第十四届省赛Java B组】真题训练(A - C)正在更新

目录 A、阶乘求和 - BigInteger B、幸运数字 - 字符串 进制转换 暴力大法 C、数组分割 - A、阶乘求和 - BigInteger 思路&#xff1a; 当时比赛时&#xff0c;拿计算器算的&#xff0c;然后辛辛苦苦也没对 看到这个数肯定很大&#xff0c;而且只求后9位&#xff0c;阶乘越…

【计算机网络】应用层

应用层协议原理 客户-服务器体系结构&#xff1a; 特点&#xff1a;客户之间不能直接通信&#xff1b;服务器具有周知的&#xff0c;固定的地址&#xff0c;该地址称为IP地址。 配备大量主机的数据中心常被用于创建强大的虚拟服务器&#xff1b;P2P体系结构&#xff1a; 特点&…

K8S知识点(二)

&#xff08;1&#xff09;K8S概念 K8S是通过控制pod来控制容器进而控制程序的 service是沟通Pod和外键的桥梁&#xff0c;可以实现负载均衡的效果&#xff0c;加权负载的效果 &#xff08;2&#xff09;环境搭建-环境规划 &#xff08;3&#xff09;环境搭建-主机安装 使用…

求先序排列

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 给出一棵二叉树的中序与后序排列。求出它的先序排列。&#xff08;约定树结点用不同的大写字母表示&#xff0c;长度 ≤ 8&#xff09;。 输入描述: 2行&#xff0c;均为大写字母组…

MTR (Mini-Transaction)

MTR&#xff0c;即Mini-Transaction&#xff0c;是InnoDB存储引擎中的一种管理并发事务的机制。它用于确保在并发环境下&#xff0c;数据库操作的一致性、隔离性和持久性。MTR被设计用来管理数据库内部的操作&#xff0c;以确保多个事务在并发执行时&#xff0c;对数据的修改不…

时序分解 | Matlab实现PSO-VMD粒子群算法优化变分模态分解时间序列信号分解

时序分解 | Matlab实现PSO-VMD粒子群算法优化变分模态分解时间序列信号分解 目录 时序分解 | Matlab实现PSO-VMD粒子群算法优化变分模态分解时间序列信号分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 PSO-VMD粒子群算法PSO优化VMD变分模态分解 可直接运行 分解效果…

2023-11-04 LeetCode每日一题(数组中两个数的最大异或值)

2023-11-04每日一题 一、题目编号 421. 数组中两个数的最大异或值二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数数组 nums &#xff0c;返回 nums[i] XOR nums[j] 的最大运算结果&#xff0c;其中 0 ≤ i ≤ j < n 。 示例 1&#xff1a; 示例 2&…

[动态规划] (六) 路径问题 LeetCode 63.不同路径II

[动态规划] (六) 路径问题: LeetCode 63.不同路径II 文章目录 [动态规划] (六) 路径问题: LeetCode 63.不同路径II题目解析解题思路状态表示状态转移方程初始化和填表返回值 代码实现总结 63. 不同路径 II 题目解析 (1) 机器人从左上角移动到右下角 (2) 机器人只能向右或者向…

Android STR研究之四

前言&#xff1a; 在前三篇中初步介绍了开机流程和STR流程&#xff0c;这里讲唤醒 Android STR研究之一-CSDN博客 Android STR研究之二-CSDN博客 Android STR研究之三-CSDN博客 唤醒 如上文所述&#xff0c;当唤醒的时候代码会继续往下执行 private void doHandleDeepSleep(bo…

【漏洞复现】Nginx_0.7.65_空字节漏洞

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 1.1、漏洞描述 1.2、漏洞等级 1.3、影响版本 0.7.65 1.4、漏洞复现 1、基础环…

JavaScript数据类型检测与数据类型转换详细解析与代码实例

JavaScript是一种弱类型语言&#xff0c;因此在开发过程中&#xff0c;经常需要进行数据类型检测和数据类型转换。本文将详细介绍JavaScript中的数据类型检测和转换&#xff0c;并提供相关的代码实例。 一、数据类型检测 在JavaScript中&#xff0c;常用的数据类型有&#xf…

JavaSpringbootMySQL高校实训管理平台01557-计算机毕业设计项目选题推荐(附源码)

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2 高校实训管理平台系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系…

Oracle安全基线检查

一、账户安全 1、禁止SYSDBA用户远程连接 用户具备数据库超级管理员(SYSDBA)权限的用户远程管理登录SYSDBA用户只能本地登录,不能远程。REMOTE_LOGIN_PASSWORDFILE函数的Value值为NONE。这意味着禁止共享口令文件,只能通过操作系统认证登录Oracle数据库。 1)检查REMOTE…

vue+prismjs 网页代码高亮插件

最近在使用wangEditor的过程中发现编辑器中代码块展示没有问题&#xff0c;但是预览编辑器中的内容样式丢失&#xff0c;看过wangEditor的文档后发现用到了Prism.js&#xff0c;现将使用的经验分享。 使用步骤 1、安装prismjs插件 // 1. 安装prismjs 插件 npm install prismj…

软考高项-项目资源管理过程

规划资源管理&#xff1a;定义如何估算、获取、管理和利用实物以及团队项目资源&#xff1b;估算活动资源&#xff1a;估算执行项目所需的团队资源&#xff0c;材料、设备和用品的类型和数量&#xff1b;获取资源&#xff1a;获取项目所需的团队成员、设施、设备、材料、用品和…

【python 深拷贝与浅拷贝】

python 深拷贝与浅拷贝 问题&#xff1a; 在用影刀编写流程的时候发现&#xff0c;明明只修改人名为“小张”对应的字典里面的值&#xff0c;但是所有的人名对应的值都被修改了。 原因&#xff1a; 第14行&#xff0c;设置键值对&#xff0c;值对应的变量“初始打卡类型字…