开发知识点-JAVA图形化-JavaFX

在这里插入图片描述

JavaFX

  • JavaFX通用漏洞利用工具开发从无到无
  • 环境配置
    • vscode配置JavaFX
  • JavaFX基本程序结构
  • 创建项目
    • 新建一个包
      • 新建入口类(主类)
      • 新建(FX)label标签
    • 创建按钮
  • JavaFX应用的 Stage窗口
  • JavaFX应用的 Scene 场景类
  • Node UI控件的通用属性 (node抽象类)
  • UI控件的属性绑定和属性监听

JavaFX通用漏洞利用工具开发从无到无

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

  
 http://www.secist.com/archives/1152.html
 https://www.cnblogs.com/kbhome/p/13073746.html

环境配置

  • windows10/7
  • IDE-vscode/IDEA
  • JavaFX

vscode配置JavaFX

JDK11以后就把JavaFX分离出来了,而vscode支持的是JDK11以后的版本。
就算你下的是JDK11以前的版本在vscode上也不能使用。

自行去下载JavaFX,(记住下载的JavaFX要与自己下载的JDK版本一致)

https://openjfx.cn/

点击下载,进入下载页面

在这里插入图片描述
选择符合自己操作系统和JDK版本的去下载

JavaFX基本程序结构

窗口 为 stage类的实例表示

在这里插入图片描述

窗口内 可以设置 场景 – 并在窗口内 可以 切换 多个场景
但是 一次只能 显示 一个场景

场景内 可添加 组件图的树形结构

树的根节点是一个Parent子类

一般 设置根节点 为 布局 (不同组件节点) -左

也可以 内嵌 布局为节点 - 右

2017.3

创建项目

new project
不选择 JavaFX(自动生成代码结构)

选择普通的项目
在这里插入图片描述

新建一个包

在这里插入图片描述

新建入口类(主类)

在这里插入图片描述
创建 psvm main入口方法
并继承抽象类Application

在这里插入图片描述

重写它的抽象类抽象方法 alt + enter

在这里插入图片描述

package com.aming.exp;

import javafx.application.Application;
import javafx.stage.Stage;

public class Main extends Application {

    public static void main(String[] args) {

    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        
    }
}

在入口函数 调用 application的静态方法 launch
它会自动调用start 并传递 Stage主窗口

 package com.aming.exp;

import javafx.application.Application;
import javafx.stage.Stage;

public class Main extends Application {

    public static void main(String[] args) {
        Application.launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("AmingExp");
        primaryStage.show();
    }
}

在这里插入图片描述
默认 宽度高度 位置

新建(FX)label标签

新建标签
创建 布局
把标签 放到 布局里面

窗口里创建场景
把布局放进场景里
再把场景放到窗口

     @Override
    public void start(Stage primaryStage) throws Exception {

        Label dailiL = new Label("代理");
        BorderPane pane = new BorderPane(dailiL);

        Scene scene = new Scene(pane,500,300);

        primaryStage.setScene(scene);

        primaryStage.setTitle("AmingExp");
        primaryStage.show();
    }

在这里插入图片描述
borderpane 布局 会把 场景 划分为 上下左右中

默认在中间

创建按钮

application获取主机服务

javafx buttonn

添加按钮点击事件
lambda表达式

    @Override
    public void start(Stage primaryStage) throws Exception {

        Label dailiL = new Label("代理");
        Button rightB  = new Button("开启");
        rightB.setOnAction(e->{
            getHostServices().showDocument("http://www.baidu.com");
        });

        BorderPane pane = new BorderPane(rightB);


        Scene scene = new Scene(pane,500,300);

        primaryStage.setScene(scene);

        primaryStage.setTitle("AmingExp");
        primaryStage.show();
    }

JavaFX应用的 Stage窗口

start默认带一个stage窗口
在这里插入图片描述
title stage.settitle

icon
在src同行创建 resources资源文件夹 image logo.png
右键复制其相对路径

 primaryStage.getIcons().add(new Image("image/icon.png"));

resiziable 可改变大小 true默认 false 不可改变

 primaryStage.setResizable(false); 

x,y,weight,height
我们可以设置场景宽高
stagestyle 窗口样式
枚举类型 四个

在这里插入图片描述

  primaryStage.initStyle(StageStyle.TRANSPARENT); 透明背景
  primaryStage.initStyle(StageStyle.DECORATED); 系统默认 
 primaryStage.initStyle(StageStyle.UNDECORATED);没有标题栏图标
 primaryStage.initStyle(StageStyle.UNIFIED);简单装饰

modality 窗口的模式 是否为模态多窗口 默认为可以自由点击

             Stage stage =new Stage();
            stage.setHeight(300);
            stage.setWidth(500);


 stage.initModality(Modality.NONE);  默认  非模态
 stage.initModality(Modality.APPLICATION_MODAL);  全局模态
 stage.initModality(Modality.WINDOW_MODAL);  需要父窗口 打开窗口 禁用父窗口
  stage.initOwner(primaryStage);   设置父窗口	

          

event 窗口事件
点击 最大化/关闭/键盘事件

监听关闭事件 需要把默认的关闭事件取消掉

         Platform.setImplicitExit(false);
        primaryStage.setOnCloseRequest(e->{
            e.consume();
            Alert alert =new Alert(Alert.AlertType.CONFIRMATION);
            alert.setTitle("关闭杀器");
            alert.setHeaderText(null);
            alert.setContentText("是否关闭利用框架");

            Optional<ButtonType> result =alert.showAndWait();
            if (result.get() == ButtonType.OK){
                Platform.exit();
                //primaryStage.close(); 关闭窗口  程序还在后台
            }
        });

JavaFX应用的 Scene 场景类

在这里插入图片描述

new 一个场景 里面放 一个 树形结构的 组件

参数为: 树根节点,宽,高

再把 场景 加到 窗口里,可以切换场景(点击事件 切换场景)

         AnchorPane pane = new AnchorPane();
        AnchorPane pane1 = new AnchorPane();


        Scene scene = new Scene(pane,500,300);
        Scene scene1 = new Scene(pane1,500,300);

        primaryStage.setScene(scene);

        pane.getChildren().addAll(dailiL,rightProxy);

        pane1.getChildren().addAll(closeProxy);
        rightProxy.setOnAction(e->{
            primaryStage.setScene(scene1);
        });

        closeProxy.setOnAction(e->{
            primaryStage.setScene(scene);
        });

在这里插入图片描述

  • 鼠标箭头的形式
        Button rightProxy  = new Button("开启代理");
        rightProxy.setLayoutX(10);
        rightProxy.setLayoutY(20);
   Scene scene = new Scene(pane,500,300);
    scene.setCursor(new ImageCursor(new Image("image/cursor.png")));

Node UI控件的通用属性 (node抽象类)

不能被实例化

在这里插入图片描述
所有控件的父类都是继承在这个node

用node的属性方法 用它的子类(所有组件都是继承node)

在这里插入图片描述
node类的通用属性(所有组件都有的属性)

  • 坐标
    在这里插入图片描述

  • 宽高

  • 样式 (居中) 显示visible、透明度opacity、混合模式blendMode(两个控件叠加 跟ps同理)

  • 平移、旋转 rotate、三D旋转

  • 包裹parent、场景scene、id(fx布局用到)

在这里插入图片描述

在这里插入图片描述

UI控件的属性绑定和属性监听

在这里插入图片描述
UI控件的绑定主要用Property这个接口

Node属性基本用的property接口子类的实例
甚少使用wrapped这个数据类型

有 Boolean、Integer、Long、String、object类封装

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

纯CSS3制作优惠券线性UI效果

纯CSS3制作优惠券线性UI效果-遇见你与你分享

自激振荡电路笔记 电弧打火机

三极管相关 三极管的形象描述 二极管 简单求解&#xff08;理想&#xff09; 优先导通&#xff08;理想&#xff09; 恒压降 稳压管&#xff08;二极管plus&#xff09; 基础工作模块 理想稳压管的工作特性 晶体管之三极管(“两个二极管的组合” ) 电弧打火机电路 1.闭合开…

nodejs微信小程序+python+PHP的冷链物流配送系统-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

推荐几个开源HTTP服务接口快速生成工具

在现在流行微服务、前后端分离软件开发架构下&#xff0c;基于标准RESTful/JSON的HTTP接口已经成为主流。在实际业务中有很多需要快速开发调用数据服务接口的需求&#xff0c;但团队中缺乏专业的后端开发人员&#xff0c;比如&#xff1a; &#xff08;1&#xff09;数据库表已…

Java定时器

目录 什么是定时器&#xff1f; 如何使用定时器&#xff1f; schedule Timer的构造方法 cancel 定时器的模拟实现 思路分析 实现过程 完整代码 什么是定时器&#xff1f; 定时器&#xff1a;即在设定的时间时执行某事的设备&#xff08;例如闹钟&#xff0c;在指定的时…

python期刊稿件在线投稿系统q2ud0

本系统的用户可分为管理员、投稿者、审稿人和编辑四个用户角色组成。管理员可以管理系统内所有功能&#xff0c;主要有个人中心、投稿者管理、审稿人管理、编辑管理、个人稿件管理、审核稿件管理、稿件信息管理、类型管理等功能&#xff1b;编辑登录系统主要有个人中心、审核稿…

大模型训练过程概述

上图来自 Andrej Karpathy&#xff0c;深度学习的大拿&#xff0c;目前在Tesla。这张图的信息量相当大&#xff0c;通过该图能让我们对大模型的整个训练过程有一个总体的了解。 从该图可知大模型训练主要有4步&#xff1a; Pretraining — 预训练阶段 Supervised Finetuning&…

透过许战海矩阵洞察安记食品增长战略

引言&#xff1a;安记食品如果想实施增长战略&#xff0c;建议深耕招牌产品,走向全国市场,目前招牌产品咖哩和复合调味粉市场空间没有被全面释放出来,需要科学的产品战略作为支撑。安记食品选择功能性产品方向是正确的,但“功能性”需要一个大品类作为载体,牛奶,饮料是最大的载…

C# Onnx yolov8n forklift detection

目录 效果 模型 项目 代码 下载 C# Onnx yolov8n forklift detection 效果 模型 Model Properties ------------------------- date&#xff1a;2023-12-25T16:22:05.530078 author&#xff1a;Ultralytics task&#xff1a;detect license&#xff1a;AGPL-3.0 https:/…

牛客网SQL训练4—SQL进阶挑战

文章目录 一、增删改操作1. 插入记录2. 更新记录3. 删除记录 二、表与索引操作1. 表的创建、修改与删除2. 索引的创建、删除 三、聚合分组查询1. 聚合函数2. 分组查询 四、多表查询1. 嵌套子查询2. 合并查询3. 连接查询 五、窗口函数1. 专用窗口函数2. 聚合窗口函数 六、其他常…

分布式【4. 什么是 CAP?】

什么是 CAP&#xff1f; C 代表 Consistency&#xff0c;一致性&#xff0c;是指所有节点在同一时刻的数据是相同的&#xff0c;即更新操作执行结束并响应用户完成后&#xff0c;所有节点存储的数据会保持相同。 A 代表 Availability&#xff0c;可用性&#xff0c;是指系统提…

开源radishes高仿网易云音乐完整源码,可试听和下载“灰色”歌曲,跨平台的无版权音乐平台

源码介绍 Radishes是项目名称&#xff0c;是由萝卜翻译而来。可以在这里试听和下载“灰色”歌曲&#xff0c;是一个可以跨平台的无版权音乐平台。 萝卜音乐界面和功能参考 windows 网易云音乐界面和 ios 的网易云音乐 安装依赖 cd radishes/ yarn bootstrap 运行项目 web:…

【回溯】0-1背包Python实现

文章目录 [toc]问题描述形式化描述 回溯法时间复杂性Python实现 个人主页&#xff1a;丷从心 系列专栏&#xff1a;回溯法 问题描述 给定 n n n种物品和一背包&#xff0c;物品 i i i的重量是 w i w_{i} wi​&#xff0c;其价值为 v i v_{i} vi​&#xff0c;背包的容量为 c …

力扣每日一题99:恢复二叉搜索树

题目 给你二叉搜索树的根节点 root &#xff0c;该树中的 恰好 两个节点的值被错误地交换。请在不改变其结构的情况下&#xff0c;恢复这棵树 。 示例 1&#xff1a; 输入&#xff1a;root [1,3,null,null,2] 输出&#xff1a;[3,1,null,null,2] 解释&#xff1a;3 不能是 1 …

vue保姆级教程----组件之间的参数传递

&#x1f4e2; 鸿蒙专栏&#xff1a;想学鸿蒙的&#xff0c;冲 &#x1f4e2; C语言专栏&#xff1a;想学C语言的&#xff0c;冲 &#x1f4e2; VUE专栏&#xff1a;想学VUE的&#xff0c;冲这里 &#x1f4e2; CSS专栏&#xff1a;想学CSS的&#xff0c;冲这里 &#x1f4…

QT 输入框输入限制 正则表达式限制 整理

在使用 输入数值时&#xff0c;经常遇到限制其范围的需要&#xff0c;比如角太阳高度角范围为[-90,90]&#xff0c;经度值范围[-180,180]&#xff0c;方位角范围[0,360]。Qt提供了QIntValidator和QDoubleValidator可以限定数值输入范围&#xff0c;如使用QIntValidator限制整数…

RK3568测试tdd

RK3568测试tdd 一、门禁取包二、烧录三、跑tdd用例四、查看结果参考资料 一、门禁取包 右键复制链接&#xff0c;粘贴下载&#xff1b;解压到文件夹&#xff1b; 二、烧录 双击\windows\RKDevTool.exe打开烧写工具&#xff0c;工具界面击烧写步骤如图所示&#xff1a; 推荐…

单片机的存储、堆栈与程序执行方式

一、单片机存储区域 如图所示位STM32F103ZET6的参数&#xff1a; 单片机的ROM&#xff08;内部FLASH&#xff09;&#xff1a;512KB&#xff0c;用来存放程序代码的空间。 单片机的RAM&#xff1a;64KB&#xff0c;一般都被分配为堆、栈、变量等的空间。 二、堆和栈的概念 …

中间人攻击是什么,会产生哪些危害,如何有效防止中间人攻击

简介 中间人攻击&#xff08;Man-in-the-Middle Attack&#xff0c;简称MITM攻击&#xff09;是一种网络攻击&#xff0c;其原理是攻击者通过各种技术手段将受攻击者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间&#xff0c;这台计算机称为“中间人”。在攻击过…

关于HTTPS

目录 什么是加密 对称加密 非对称加密 中间人攻击 引入证书 HTTPS是一个应用层的协议,是在HTTP协议的基础上引入了一个加密层. HTTP协议内容都是按照文本的方式明文传输,这就导致在传输的过程中出现一些被篡改的情况. 运营商劫持事件 未被劫持的效果,点击下载按钮,就会…