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

news2024/11/26 0:41:19

在这里插入图片描述

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类封装

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

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

相关文章

Linux操作系统极速入门[常用指令]

linux概述&#xff1a; Linux是一套免费使用和自由传播的操作系统 我们为什么要学&#xff0c;Linux&#xff1f; 主流操作系统&#xff1a; linux系统版本&#xff1a; 内核版&#xff1a; 由linux核心团队开发&#xff0c;维护 免费&#xff0c;开源 负责控制硬件 发行版&…

Grafana告警发送至飞书配置指定at某人或所有人

1.问题描述 通过webhook向飞书机器人发送消息&#xff0c;根据飞书机器人官方文档&#xff0c;始终无法指定某个人或者所有人通知&#xff0c;后来发现是文档参数有问题。 文档地址&#xff1a;https://open.feishu.cn/document/client-docs/bot-v3/add-custom-bot 官方文档给…

UGUI:一个轻量级的TFTLCD彩色显示屏GUI库

目录 一、引言 二、移植说明 三、如何使用UGUI函数 2.1 UGUI函数介绍 2.2 窗口控件管理 2.3 如何建立一个按键 四、如何实现触摸控制 一、引言 UGUI是一个经过精心设计的轻量级TFT-LCD彩色显示屏GUI库&#xff0c;旨在为用户提供高效、稳定且易于使用的图形用户界面。该…

Spring基础IoC(控制反转)与DI(依赖注入)

1. Spring 基础 1.1 什么是Spring框架&#xff1f;它能带来那些好处&#xff1f; Spring 是一个开源的轻量级的 Java 开发框架&#xff0c;可以帮助开发人员更高效的进行开发&#xff0c;主要优势在于简化开发和框架整合。 Spring框架整合了很多模块&#xff0c;这些模块可以…

【Python排序算法系列】—— 选择排序

​ &#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 选择排序 过程演示&#xff1a; 选择排序实现代码&#xff1a; 分析选择排序&#xff1a…

Spring AOP—深入动态代理 万字详解(通俗易懂)

目录 一、前言 二、动态代理快速入门 1.为什么需要动态代理&#xff1f; : 2.动态代理使用案例&#xff1a; 3.动态代理的灵活性 : 三、深入动态代理 1.需求 : 2.实现 : 2.1 接口和实现类 2.2 提供代理对象的类 2.3 测试类 3.引出AOP : 四、总结 一、前言 第四节内容&…

学习笔记|电动汽车上CAN报文解析

电动汽车&#xff0c;以电池和电机系统取代了内燃机汽车的发动机系统&#xff0c;使得汽车上主要的结构和电气件发生了很大变化。在传统汽车上已经比较成熟的CAN总线技术&#xff0c;电动汽车仍然需要作出必要调整才能够使用。 1 电动汽车的CAN协议 常用车辆CAN总线通讯协议&a…

【数据结构】排序之插入排序

排序目录 1.前言2. 排序的概念及其运用2.1 排序的概念2.2 排序的运用2.3 常见的排序算法 3. 插入排序3.1 基本思想3.2 直接插入排序3.2.1 直接插入排序实现3.2.1.1 分析3.2.1.2 代码实现 3.3 希尔排序3.3.1 希尔排序实现3.3.1.1 分析3.3.1.2 代码实现 4. 附代码4.1 sort.h4.2 s…

【第七在线】为什么智能商品管理是对传统商品管理模式的颠覆?

智能商品管理确实在一定程度上颠覆了传统的商品管理模式。传统商品管理通常依赖于人工的经验和决策&#xff0c;而智能商品管理则利用人工智能和相关技术来提供更智能化和高效化的解决方案。 智能商品管理通过数据分析和预测能力&#xff0c;可以更准确地预测市场需求和销售趋…

AI智能分析网关V4区域人数超员算法模型的应用原理及使用场景

视频AI智能分析技术已经深入到人类生活的各个角落&#xff0c;与社会发展的方方面面紧密相连。从日常生活中的各种场景&#xff0c;如人脸识别、车牌识别&#xff0c;到工业生产中的安全监控&#xff0c;如工厂园区的翻越围栏识别、入侵识别、工地的安全帽识别、车间流水线产品…

医院绩效考核系统源码,java源码,商业级医院绩效核算系统源码

医院绩效定义&#xff1a; “医院工作量绩效方案”是一套以工作量&#xff08;RBRVS&#xff0c;相对价值比率&#xff09;为核算基础&#xff0c;以工作岗位、技术含量、风险程度、服务数量等业绩为主要依据&#xff0c;以工作效率和效益、工作质量、患者满意度等指标为综合考…

D9741 PWM控制器电路,定时闩锁、短路保护电路,输出基准电压(2.5V) 采用SOP16封装

D9741是一块脉宽调制方三用于也收路像机和笔记本电的等设备上的直流转换器。在便携式的仪器设备上。 主要特点&#xff1a;● 高精度基准电路 ● 定时闩锁、短路保护电路 ● 低电压输入时误操作保护电路 ● 输出基准电…

MAC运行Windows专用软件 CrossOver v23.7.1中文版 macOS

CrossOver v23.7.1中文版是一款系统兼容软件&#xff0c;让您可以在 Mac 和 Linux 系统上运行 Windows 应用&#xff0c;不必购买 Windows 授权&#xff0c;不必重启系统&#xff0c;不必使用虚拟机。通过 CrossOver&#xff0c; 您可以从 dock 直接启动 Windows 应用&#xff…

WEB 3D技术 three.js 色彩空间讲解

上文 WEB 3D技术 three.js 设置环境贴图 高光贴图 场景设置 光照贴图 我们讲了基础材质的各种纹理 但是 我们的图片 到了界面场景中 好像绿的程度有点不太一样了 这里的话 涉及到我们的色彩空间 他有两种 一种是线性的 一种是 sRGB类型的 线性呢 就是根据光照强度 去均匀分…

nodejs+vue+ElementUi农产品团购销售系统zto2c

目标是为了完成小区团购平台的设计和实现&#xff0c;在疫情当下的环境&#xff0c;方便小区业主购入生活所需&#xff0c;减小居民的生活压力 采用B/S模式架构系统&#xff0c;开发简单&#xff0c;只需要连接网络即可登录本系统&#xff0c;不需要安装任何客户端。开发工具采…

OrientDB使用教程:全面了解图数据库

图数据库在当今数据处理领域中扮演着越来越重要的角色&#xff0c;而OrientDB作为一种多模型的数据库&#xff0c;具有图数据库、文档数据库和对象数据库的特性&#xff0c;为应对不同场景提供了灵活的解决方案。本教程将简要介绍OrientDB的使用&#xff0c;包括基本概念、安装…

3-链表-删除链表的倒数第 N 个结点

这是链表的第三篇算法&#xff0c;力扣链接。 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1],…

为什么TCP会粘包

硬核图解|tcp为什么会粘包&#xff1f;背后的原因让人暖心 数据包报文格式&#xff08;IP包、TCP报头、UDP报头&#xff09; TCP&#xff0c;Transmission Control Protocol。传输控制协议&#xff0c;是一种面向连接的、可靠的、基于字节流的传输层通信协议。 TCP粘包是指发…

vue2中使用百度地图BMapGL

1、npm 命令安装 npm install vue-bmap-gl --save2、main.js 中文件引入 import VueBMap from vue-bmap-gl import vue-bmap-gl/dist/style.css VueBMap.initBMapApiLoader({// 百度的keyak:*********,// 这个密钥请使用自己注册的 }) Vue.use(VueBMap)3、页面调用 <temp…

一篇文章带你入门PHP魔术方法

PHP魔术方法 PHP 中的"魔术方法"是一组特殊的方法&#xff0c;它们在特定情况下自动被调用。这些方法的名称都是以两个下划线&#xff08;__&#xff09;开头。魔术方法提供了一种方式来执行各种高级编程技巧&#xff0c;使得对象的行为可以更加灵活和强大。以下是一…