当前位置: 首页 > news >正文

JavaFx基础学习【五】:FXML布局文件使用

目录

前言

一、介绍

二、简单体验

三、FXML标签元素

四、fx属性介绍

五、重写initialize(名字需要保持一致)方法

六、Scene Builder快速布局


前言

如果你还没有看过前面的文章,可以通过以下链接快速前往学习:

JavaFx基础学习【一】:基本认识_明天再去学习的博客-CSDN博客

JavaFx基础学习【二】:Stage_明天再去学习的博客-CSDN博客 

JavaFx基础学习【三】:Scene_明天再去学习的博客-CSDN博客 

JavaFx基础学习【四】:UI控件的通用属性_明天再去学习的博客-CSDN博客 

一、介绍

FXML是一种在JavaFX应用程序中定义用户界面的,基于XML的声明性标记语言。FXML非常适用来静态布局,如表单、控件和表格。

如果你还不是不明白FXML到底是什么,你可以类比HTML,我们可以通过HTML来做web页面的UI,同理,我们就可以使用FXML来做JavaFx应用程序的UI。

二、简单体验

1、在resource文件夹下建立一个hello-view.fxml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?><?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?><AnchorPane xmlns="http://javafx.com/javafx"xmlns:fx="http://javafx.com/fxml"><Button>我是一个按钮</Button></AnchorPane>

2、启动类

public class HelloApplication extends Application {@Overridepublic void start(Stage stage) throws IOException {System.out.println(getClass());Pane root = FXMLLoader.load(getClass().getResource("test.fxml"));Scene scene = new Scene(root, 320, 240);stage.setTitle("Hello!");stage.setScene(scene);stage.show();}public static void main(String[] args) {launch();}
}

3、效果

三、FXML标签元素

1、import标签

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

如果我们需要使用某一个类,那么我们就要将这个类导入,就像我们的java文件中的import一样

2、布局标签

<AnchorPane xmlns="http://javafx.com/javafx"xmlns:fx="http://javafx.com/fxml"></AnchorPane>

该布局标签还有一个属性”fx:controller“,用于指定事件处理控制器,后续将会介绍,还有一些其他属性比如fx:id,fx:value,fx:constant,fx:factory,感兴趣的可以自行了解

在该布局标签中,可以使用如Button、Label等其他子标签

四、fx属性介绍

1、fx:id,用于指定标签的id,通过该id,我们便能够找到该标签

<Button fx:id="myBtn">我是一个按钮</Button>

2、fx:controller,用于指定事件处理控制器,我们可以给Pane指定一个事件处理控制器,这样我们就可以在该事件处理器中,定义各种事件处理

1)创建一个事件控制器,给按钮添加一个点击事件

public class TestController {@FXMLprivate Button myBtn;@FXMLprotected void onHelloButtonClick() {System.out.println("按钮被点击了");myBtn.setPrefWidth(150);}}

在此处,我们的按钮名称属性保持与FXML按钮标签中的fx:id一致,再给属性添加@FXML注解,该按钮属性将会与我们的FXML文件中的按钮保持联系

同时,我们在该类中定义好各种事件,再给FXML按钮添加事件方法,将会生效,FXML按钮方法回填:

<Button fx:id="myBtn" onAction="#onHelloButtonClick">我是一个按钮</Button>

当我们点击按钮,就能够看到控制台打印文字,也能看到按钮宽度变长(与上图对比):

2)先指定一个事件控制器

<AnchorPane xmlns="http://javafx.com/javafx"xmlns:fx="http://javafx.com/fxml" fx:controller="com.example.javafxlearn.TestController"><Button fx:id="myBtn">我是一个按钮</Button></AnchorPane>

五、重写initialize(名字需要保持一致)方法

public class TestController {@FXMLprivate Button myBtn;@FXMLprotected void onHelloButtonClick() {System.out.println("按钮被点击了");myBtn.setPrefWidth(150);}public void initialize(){System.out.println("组件初始化结束,可以进行初始化数据");}}

我们可以重写initialize方法,该方法将会自动调用,在我们组件初始化完毕之后,我们可以做其他初始化操作,比如数据的加载之类的 

六、Scene Builder快速布局

你可以前往JavaFx官网进行下载,下载完之后可以通过拖拽的方式进行布局,此处就不介绍了,自行下载体验

http://www.lryc.cn/news/126358.html

相关文章:

  • 通过Python爬虫提升网站搜索排名
  • 【博客698】为什么当linux作为router使用时,安装docker后流量转发失败
  • el-dialog嵌套,修改内层el-dialog样式(自定义样式)
  • B树和B+树区别
  • intelJ IDEA\PHPStorm \WebStorm\PyCharm 通过ssh连接远程Mysql\Postgresql等数据库
  • vfuhyuuy
  • CSS自学框架之表单
  • 使用Spring Boot和Redis实现用户IP接口限流的详细指南
  • 前端性能优化——包体积压缩插件,打包速度提升插件,提升浏览器响应的速率模式
  • 配置vscode
  • 【Spring】深入理解 Spring 事务及其传播机制
  • eclipse常用设置
  • ajax解析
  • CSS3:图片边框
  • (七)Unity VR项目升级至Vision Pro需要做的工作
  • 【计算机视觉|生成对抗】生成对抗网络(GAN)
  • 神经网络基础-神经网络补充概念-15-神经网络概览
  • iOS Epub阅读器改造记录
  • 负载均衡搭建
  • form表单input标签的23种type类型值?
  • python selenium如何保存网站的cookie用于下次自动登录
  • DHCP Server
  • DMR+PoC宽窄融合互通解决方案
  • Springboot定时执行任务
  • 【Apollo】阿波罗自动驾驶:塑造自动驾驶技术的未来
  • JavaEE初阶:多线程 - Thread 类的基本用法
  • 编写 loading、加密解密 发布NPM依赖包,并实施落地使用
  • 【剑指Offer 57】和为s的连续正数序列,Java解密。
  • 深度学习实战基础案例——卷积神经网络(CNN)基于SqueezeNet的眼疾识别|第1例
  • 麦肯锡发布《2023年度科技报告》!