JavaFX:控件Group。

news2025/1/18 4:42:34

group组件是一个容器组件,它不对其子组件应用特殊布局。所有子组件(节点)都位于0,0处。JavaFX组组件通常用于将一些效果或转换应用于一组控件(作为一个组)。如果需要对组内的子级进行一些布局,请将它们嵌套在布局组件内,然后将布局组件添加到组中。

Group的功能

  • Group可以管理一组节点
  • Group可以对管理的节点进行增删改查的操作
  • Group可以管理节点的属性

测试一:直接将控件添加到容器Group中

测试容器Group。Group容器将控件依次放入。控件重叠放置在容器Group对象中,先放的控件在下层,后放的在上层。如果下小上大则只能看到后添加的控件,反之可以看到前面添加的控件。

测试代码:

package javafx8.ch10;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

/**
 * @copyright 2003-2023
 * @package   javafx8.ch10
 * @file      GroupTest.java
 * @date      2023-07-01 20:06
 * @author    qiao wei
 * @version   1.0
 * @brief     测试容器Group。Group容器将控件依次放入。控件重叠放置在容器Group对象中,先放的控件在下层,后放的在
 *            上层。如果下小上大则只能看到后添加的控件,反之可以看到前面添加的控件。
 * @history
 */
public class GroupTest extends Application {
    
    public GroupTest() {}
    
    @Override
    public void start(Stage primaryStage) throws Exception {
        Button smallButton = new Button("Small button");
        Button bigButton = new Button("This is a big button");
        
        Group group = new Group();
        
        // 按钮控件放置顺序使得大小按钮都能显示。
        group.getChildren().addAll(bigButton, smallButton);

        Button smallButton01 = new Button("Small button 01");
        Button bigButton01 = new Button("This is a big button 01");
        Group group1 = new Group();
        
        // 按钮控件放置顺序使得只能大按钮显示。
        group1.getChildren().addAll(smallButton01, bigButton01);

        HBox hBox = new HBox(5);
        hBox.getChildren().addAll(group, group1);
        
        primaryStage.setScene(new Scene(hBox));
        primaryStage.show();
    }
    
    public static void main(String[] args) {
        Application.launch(GroupTest.class, args);
    }
}

测试结果:

测试二:将控件间Group旋转、阴影设置,影响容器中的所有控件

测试代码:

package javafx8.ch10;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.effect.DropShadow;
import javafx.scene.layout.Border;
import javafx.scene.layout.BorderStroke;
import javafx.scene.layout.BorderStrokeStyle;
import javafx.scene.layout.BorderWidths;
import javafx.scene.layout.CornerRadii;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

/**
 * @copyright 2003-2023
 * @package   learn.javafx8.javafx8.ch10
 * @file      GroupEffect.java
 * @date      2023-08-19 15:31
 * @author    qiao wei
 * @version   1.0
 * @brief     Layout。对容器Group对象进行设置,影响作用于Group容器中所有控件。
 * @history
 */
public class GroupEffect extends Application {
    
    public GroupEffect() {}
    
    @Override
    public void start(Stage primayStage) throws Exception {
//        setWidget(primayStage);
        setWidget01(primayStage);
    }
    
    public static void main(String[] args) {
        try {
            Application.launch(GroupEffect.class, args);
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
    
    /**
     * @class   GroupEffect
     * @date    2023-12-28 17:22
     * @author  qiao wei
     * @version 1.0
     * @brief   设置控件Group中所有控件的位置,设置的位置只能是控件Group的绝对位置。
     * @param   
     * @return  
     * @throws
     */
    private void setWidget(Stage stage) {
        // Create two buttons。Set the absolute locations of the buttons。
        Button okButton = new Button("OK");
        Button cancelButton = new Button("Cancel");
        okButton.setLayoutX(100);
        okButton.setLayoutY(100);
        cancelButton.setLayoutX(150);
        cancelButton.setLayoutY(10);

        /**
         * Group对象的所有设置都作用于所有子控件。
         * 1:Set a drop shadow effect.
         * 2:Rotate by 10 degrees clockwise.
         * 3:Set the opacity to 80%.
         */
        Group root = new Group();
        root.setEffect(new DropShadow());
        root.setRotate(45);
        root.setOpacity(0.8);
        root.getChildren().addAll(okButton, cancelButton);
        
        stage.setScene(new Scene(root));
        
        stage.show();
    }
    
    /**
     * @class   GroupEffect
     * @date    2023-12-28 17:23
     * @author  qiao wei
     * @version 1.0
     * @brief   设置控件Group的边框、阴影、旋转属性。
     * @param   
     * @return  
     * @throws
     */
    private void setWidget01(Stage stage) {
        // 创建2个按钮实例。
        Button okButton = new Button("OK");
        Button cancelButton = new Button("Cancel");

        HBox hBox = new HBox(5);
        hBox.getChildren().addAll(okButton, cancelButton);
        hBox.setBorder(
            new Border(
                new BorderStroke(
                    Color.BLUE,
                    BorderStrokeStyle.DASHED,
                    new CornerRadii(45),
                    new BorderWidths(3)
                )
            )
        );
        
        Group root = new Group(hBox);
        root.setEffect(new DropShadow());
        root.setRotate(15);
        
        stage.setScene(new Scene(root));
        stage.show();
    }
}

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

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

相关文章

docker学习(十八、network介绍)

文章目录 熟悉的ifconfigDocker 网络的使用方式Docker 网络的作用Docker 网络模式注意事项 首先,我们要知道什么是 Docker 网络。简单来说,它就是 Docker 中用于实现容器间通信的一个东西。 network相关内容: docker学习(十八、ne…

linux cat命令增加-f显示文件名功能

在使用cat命令配合grep批量搜索文件内容时,我仅仅能知道是否搜索到,不知道是在哪个文件里找到的。比如cat ./src/*.c | grep full_write,在src目录下的所有.c文件里找full_write,能匹配到所有的full_write,但是不知道它们分别在哪些文件里。于…

金睛云华斩获ISC2023数字安全创新能力百强 五项殊荣!

昨日,由北京市通州区人民政府指导;中关村科技园区通州园管理委员会、ISC平台主办的ISC2023数字安全创新能力百强颁奖典礼在京举行。金睛云华以卓越的产品创新实力,一举斩获网络与流量安全、威胁检测与响应、AI驱动安全、创新力十强、年度十强…

如何实现无公网ip环境访问vscode远程开发【内网穿透】

文章目录 前言1、安装 OpenSSH2、vscode 配置 ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu 安装 cpolar 内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定 TCP 端口地址5.1 保留一个固定 TCP 端口地址5.2 配置固定 TCP 端口地址5.3 测试固定公网地址远…

树莓派安装Nginx搭建web服务器结合内网穿透实现无公网IP远程访问本地站点

文章目录 1. Nginx安装2. 安装cpolar3.配置域名访问Nginx4. 固定域名访问5. 配置静态站点 安装 Nginx(发音为“engine-x”)可以将您的树莓派变成一个强大的 Web 服务器,可以用于托管网站或 Web 应用程序。相比其他 Web 服务器,Ngi…

docker学习(十九、network使用示例bridge)

文章目录 一、容器网络分配情况1.启动容器2.查看容器的network3.容器网络分配 二、bridge1.bridge详细介绍2.实践bridge两两匹配3.创建network,默认bridge network相关内容: docker学习(十八、network介绍) docker学习&#xff08…

CentOS 7 lvm 裸盘的扩容和缩容减盘 —— 筑梦之路

背景介绍 之前写过比较多的关于lvm的文章: CentOS 7 lvm 更换坏盘操作步骤小记 —— 筑梦之路_centos更换硬盘操作-CSDN博客 xfs ext4 结合lvm 扩容、缩容 —— 筑梦之路_ext4扩盘-CSDN博客 LVM逻辑卷元数据丢失恢复案例 —— 筑梦之路_pve lvm数据恢复-CSDN博客…

Java多线程技术8——并发集合框架

1 集合框架结构 Java中的集合框架父接口是Iterable,从这个接口向下一一继承就可以得到完整的Java集合框架结构。集合框架的继承与实现关系相当复杂,简化的集合框架接口结构如下图: 可以发现,出现了3个继承分支(List,Set,Queue&…

NR Scell上能收common search space dci吗?

答案肯定是能的,先看下common search space都有哪些。 1 Type0-PDCCH CSS set:在 MCG的primary cell上设置,主要包含MIB 中的pdcch-ConfigSIB1 或 PDCCH-ConfigCommon 中的 searchSpaceSIB1 或searchSpaceZero ,用于接收由SI-RNTI…

Jupyter Notebook 开启远程登录

Jupyter Notebook可以说是非常好用的小工具,但是不经过配置只能够在本机访问 安装jupyter notebook conda install jupyter notebook 生成默认配置文件 jupyter notebook --generate-config 将会在用户主目录下生成.jupyter文件夹,其中jupyter_noteb…

Spring漏洞合集

目录 什么是spring区分Spring与Struts2框架的几种新方法CVE-2016-4977:Spring Security OAuth2 远程命令执行漏洞漏洞介绍 & 环境准备漏洞发现漏洞验证 & 利用1利用2 CVE-2017-4971:Pivotal Spring Web Flow 远程代码执行漏洞漏洞介绍 & 环境…

国产化软硬件升级之路:πDataCS 赋能工业软件创新与实践

在国产化浪潮的推动下,基础设施软硬件替换和升级的需求日益增长。全栈国产化软硬件升级替换已成为许多领域中的必选项,也引起了数据库和存储领域的广泛关注。近年来,虽然涌现了许多成功的替换案例,但仍然面临着一些问题。 数据库…

SpringBoot系列---【过滤器Filter和拦截器HandlerInterceptor的区别和用法】

1.作用时机 1.1 过滤器 过滤器(Filter)主要作用在请求到达Servlet或JSP之前,对请求进行预处理,可以对HTTP请求进行过滤、修改。过滤器是基于回调函数实现的,开发人员通过重写doFilter()方法实现过滤逻辑,其主要功能有:…

自动化运维平台Spug本地部署结合内网穿透实现远程访问

文章目录 前言1. Docker安装Spug2 . 本地访问测试3. Linux 安装cpolar4. 配置Spug公网访问地址5. 公网远程访问Spug管理界面6. 固定Spug公网地址 前言 Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件…

js中变量的使用

文章目录 一、变量二、声明三、赋值四、更新变量五、声明多个变量(不推荐)六、变量的本质七、关键字八、变量名命名规则 一、变量 理解变量是计算机存储数据的“容器”,掌握变量的声明方式 白话:变量就是一个装东西的盒子。通俗:变量是计算机…

C#高级 01.Net多线程

一.基本概念 1.什么是线程? 线程是操作系统中能独立运行的最小单位,也是程序中能并发执行的一段指令序列线程是进程的一部分,一个进程可以包含多个线程,这些线程共享进程资源进程有线程入口,也可以创建更多的线程 2.…

Pandas教程(三)—— 数据清洗与准备

1.处理缺失值 1.1 数据删除函数 作用:删除Dataframe某行或某列的数据 语法:df.drop( labels [ ] ) drop函数的几个参数: labels :接收一个列表,内含删除行 / 列的索引编号或索引名 axis &…

BUUCTF Reverse/[2019红帽杯]Snake

BUUCTF Reverse/[2019红帽杯]Snake 下载解压缩后得到可执行文件,而且有一个unity的应用程序,应该是用unity编写的游戏 打开是一个贪吃蛇游戏 用.NET Reflector打开Assembly-CSharp.dll。(unity在打包后,会将所有的代码打进一个Ass…

使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解

摘要 本文博客将介绍如何在iOS环境下使用克魔助手进行数据抓包和HTTP抓包。通过抓包,开发者可以分析移动应用程序的网络请求发送和接收过程,识别潜在的性能和安全问题,提高应用的质量和安全性。 引言 在移动应用程序的开发和测试过程中&am…

【unity3D-粒子系统】粒子系统主模块-Particle System篇

💗 未来的游戏开发程序媛,现在的努力学习菜鸡 💦本专栏是我关于游戏开发的学习笔记 🈶本篇是unity的粒子系统主模块-Particle System 基础知识 Particle System 介绍:粒子系统的主模块,是必需的模块&#x…