6.Group组件

news/2025/2/28 15:39:07/文章来源:https://www.cnblogs.com/qinbaoyang/p/18554825

关于Group组件的简单介绍

  • 首先,Group组件本身并不是一个“布局”类的组件,它只是一个容器,没有提供调整内部组件展示位置的方法,也就是说,当我们将多个组件(比如button)放在group中时,他们(根据流式规则?)会全部挤在窗口的左上角,当然,如果我们没有设置组件的大小的话,那么大小也是默认的。
  • 如果我们想要调整组件的位置,可以使用组件的方法来调整,比如Button的setLayoutX()setLayoutY()
  • 涉及到的类
    1.Group类,一个容器,可以装一些组件
  • 涉及到的方法(从此以后无参构造方法,不在介绍,默认已经使用)
    1.getChildren().add() 将组件添加进入它的孩子列表
Group group=new Group();
group.getChildren().add();

2.getChildren().addAll() 将多个组件一并添加进入group中(这里以button为例)

group.getChildren().addAll(b1,b2,b3)

比如下面的例子

/*这里我们只粘贴了application的start方法,启动类不在展示,从此以后也是如此*/@Overridepublic void start(Stage primaryStage) throws Exception {Button button1=new Button();//Button的方法preHeight(),可以改变按钮大小button1.prefHeight(20);button1.prefWidth(40);Button button2=new Button();Button button3=new Button();     Group root=new Group();root.getChildren().add(button1);root.getChildren().add(button2);root.getChildren().add(button3);Scene scene=new Scene(root);primaryStage.setScene(scene);primaryStage.setTitle("JavaFx");primaryStage.setWidth(800);primaryStage.setHeight(800);primaryStage.setOpacity(0.7);primaryStage.show();}


我们使用Button的方法,调整位置之后

import java.net.URL;import javafx.application.Application;
import javafx.application.HostServices;
import javafx.scene.Cursor;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.StageStyle;public class Lanch extends Application {@Overridepublic void start(Stage primaryStage) throws Exception {Button button1=new Button("b1");   button1.setPrefWidth(50);button1.setPrefHeight(25);button1.setLayoutX(0);button1.setLayoutY(0);Button button2=new Button("b2");button2.setPrefWidth(50);button2.setPrefHeight(25);button2.setLayoutX(60);button2.setLayoutY(0);Button button3=new Button("b3");  button3.setPrefWidth(50);   button3.setPrefHeight(25);button3.setLayoutX(120);button3.setLayoutY(0);Group root=new Group();root.getChildren().add(button1);root.getChildren().add(button2);root.getChildren().add(button3);Scene scene=new Scene(root);primaryStage.setScene(scene);primaryStage.setTitle("JavaFx");primaryStage.setWidth(800);primaryStage.setHeight(800);primaryStage.show();}
}

我们发现位置已经被调整好了

3.getChildren().clear()清理布置在它上面的所有组件,getChildren().remove(int index)按苏索引清除掉某个组件
我们实现点击b1,b3消失的逻辑

 @Overridepublic void start(Stage primaryStage) throws Exception {Button button1=new Button("b1");   button1.setPrefWidth(50);button1.setPrefHeight(25);button1.setLayoutX(0);button1.setLayoutY(0);Button button2=new Button("b2");button2.setPrefWidth(50);button2.setPrefHeight(25);button2.setLayoutX(60);button2.setLayoutY(0);Button button3=new Button("b3");  button3.setPrefWidth(50);   button3.setPrefHeight(25);button3.setLayoutX(120);button3.setLayoutY(0);Group root=new Group();root.getChildren().add(button1);root.getChildren().add(button2);root.getChildren().add(button3);/** 实现一个点击b1,b3消失的逻辑*/button1.setOnMouseClicked(e->{root.getChildren().remove(2);});//使用lamda表达式简化匿名类的书写Scene scene=new Scene(root);primaryStage.setScene(scene);primaryStage.setTitle("JavaFx");primaryStage.setWidth(800);primaryStage.setHeight(800);primaryStage.show();}

点击按钮前

点击按钮后

特别注意:我们如果修改group的一些属性,那么它的子组件的对应属性也会跟着改变
一些代码


last but not least:以下是JavaFx文档中Group类文档*
https://openjfx.cn/javadoc/22/javafx.graphics/javafx/scene/Group.html

4.contains(double localX, double localY)是Group的爷爷类中实现的方法,功能是判断点(localX,localY)上是否是子组件的左上角点坐标
代码如下

System.out.println(root.contains(0,0));


5.getChildren().toArray()将子组件以数组的形式拿出来
代码如下

  /** 将Group中的子组件拿出来*/Object[] object=root.getChildren().toArray();for(Object o:object){Button button=(Button)(o);button.setPrefHeight(75);}


6.设置一个监听事件,监听group中的组件数量改变

 root.getChildren().addListener(new ListChangeListener<Node>() {@Overridepublic void onChanged(Change<? extends Node> c) {System.out.println(c.getList().size());}});

点击b1使b3消失前

点击b1使b3消失后

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

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

相关文章

直播预告:OpenAI 开始拥抱 RTC!为什么 LLM+RTC 才是多模态 AI 的未来?丨RTE Dev Talk

如果您正在开发具备语音对话、视觉理解等多模态能力的 AI Agent,请加入我们的直播讨论!OpenAI 今日发布了 OpenAI Realtime API 的重大更新,其中包括价格下调、新增模型以及一项尤为重要的改进: WebRTC 支持 。结合此前 WebRTC 创建者加入 OpenAI 的消息,这清晰地表明 Ope…

实验6 模板类、文件I/O与异常处理

实验四 vector.hpp#pragma once#include<iostream>#include<stdexcept>using namespace std;template<typename T>class Vector {private:int size;T* ptr;public:Vector(int size, int value = 0) :size{ size } {if (size < 0) {throw length_error(&qu…

把半年前完全没思路的题解了的感觉真好

虽然处理了很多次索引思路,不过最后还是过了。第一眼就有解题思路,这种感觉真不错,要的就是这种打怪升级的正反馈。 附上解题代码 `# @lc app=leetcode.cn id=2266 lang=python3[2266] 统计打字方案数@lc code=start from collections import Counter from functools import…

【Windows安全】13种回调函数执行ShellCode

#windows #回调函数 回调机制 在我们使用回调函数执行Shellcode之前,我们首先需要去了解Windows回调机制,Windows回调机制就像你和你的助手一样,比如说每一个律师所中的每一个律师都有一个实习助手,律师需要助手在特定的情况下去处理一些特殊的任务,但这些任务并不是日常…

MaLoader:一款基于Tauri+Rust的免杀马生成工具

免责声明 本公众号“黑客之道HackerWay”提供的资源仅供学习,利⽤本公众号“黑客之道HackerWay”所提供的信息而造成的任何直接或者间接的后果及损失,均由使⽤者本⼈负责,本公众号“黑客之道HackerWay”及作者不为此承担任何责任,一旦造成后果请自行承担责任!简介 MaLoade…

Element Plus组件库el-select组件多选回显踩坑

前情公司有经常需要做一些后台管理页面,我们选择了Element Plus,它是基于 Vue 3,面向设计师和开发者的组件库,是Vue框架生态中比较火的UI组件库,组件库丰富易用,组件链接:一个 Vue 3 UI 框架 | Element Plus,项目中经常会用到el-select多选功能,组件自带的多选交互也是…

Transformers 框架 Pipeline 任务详解(四):问答(question-answering)

本文深入介绍了 Transformers 框架中的 question-answering 任务,涵盖任务简介、应用场景如智能助手和客户服务、任务配置与模型选择、实战代码示例,以及如何利用 Gradio 创建 WebUI 界面,使用户能通过浏览器实时获取问答结果。文章旨在帮助读者快速掌握使用 Transformers 构…

docker高级篇(大厂进阶):安装mysql主从复制

docker高级篇(大厂进阶):安装mysql主从复制@目录1.Docker复杂安装详说1.1安装mysql主从复制本人其他相关文章链接 1.Docker复杂安装详说 1.1安装mysql主从复制主从搭建步骤: 1)新建主服务器容器实例3307 2)进入/mydata/mysql-master/conf目录下新建my.cnf 3)修改完配置后…

Bugku-CTF getshell

前几天在打2024 长城杯 & 国赛时发现的一道类似题题目:<?php define(pfkzYUelxEGmVcdDNLTjXCSIgMBKOuHAFyRtaboqwJiQWvsZrPhn, __FILE__); $cPIHjUYxDZVBvOTsuiEClpMXAfSqrdegyFtbnGzRhWNJKwLmaokQ = urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%7…

无锡在线教育系统开发怎么样

无锡在线教育系统的开发作为当前教育领域内的一种创新方式,正在逐渐受到更多人的重视和应用。从现有的数据来看,它不仅提升了教学质量和学习的灵活性,还能在很大程度上降低运营和维护成本。那么,究竟这种开发状况是怎样的,接下来我们深入了解一下其发展情况及前景。来自ww…

Obfuscar:一款针对.NET程序的开源代码混淆工具

关于Obfuscar Obfuscar是一款针对.NET程序的开源代码混淆工具,该工具支持使用大量重载将 .NET 程序集中的元数据(包括方法、属性、事件、字段、类型和命名空间的名称)重命名为最小集合,在大多数情况下仅通过签名即可区分。 例如,如果某个类仅包含接受不同参数的方法,则可…