JavaFX之Scene Builder的使用(开发一款GUI小工具原来这么简单)_scenebuilder使用
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
文章目录
博主个人社区开发与算法学习社区
博主个人主页Killing Vibe的博客
欢迎大家加入一起交流学习~~
一、前言
首先声明一下Java的强项并不在GUI上现在是web的天下博主发此篇文章仅是个人兴趣如果您是学Java开发的业余想做GUI小工具可以选择使用JavaFX。如果需要开发企业级应用推荐还是用qt或者wpf那些用Electron也是很好的选择。
二、JavaFX与Scene Builder下载
从JDK11的发布开始JavaFX已经不被包含在JDK中了。为了方便大家使用可以直接使用JDK8。
下载地址如下
不会前端没关系。
Scene Builder作为一款Java拖拽式页面设计编码工具具有强大的拖拽设计能力对于一些入门以及需要快速响应页面编码的情况该工具的效果绝对令人满意。
官方有详细的文档供大家参考本文只介绍一下Scene Builder的简单使用帮助大家极速上手用Java开发一款桌面级应用。
三、Scene Builder的使用
- 下载完后打开选择Basic Application就行助于理解
- 打开完后应该是这个界面
中间的就是咱们要设计的桌面程序的UI界面了左边Library就有JavaFX的一些控件比如按钮啊啥的直接就可以拖动到中间十分方便。我们可以根据自己的界面需求设计自己的界面最后只需要点一下保存就可以生成fxml文件了。
四、详细教学示例
4.1 环境配置
1.推荐使用Intellij-idea第一步先构建一个项目正常的话肯定构建一个Maven项目
2.点击File—>点击settings—>Languages&Frameworks—>JavaFX
在Path to SceneBuilder 中填入下载好的SceneBuilder.exe文件。
4.2 创建fxml文件以及Controller类文件
什么是fxml文件
FXML是一种以XML的格式表示JavaFX界面对象的文件,FXML文件中的每一个元素可以映射到JavaFX中的一个类,每个FXML元素的属性或者其子元素都可以映射为该对应JavaFXML类的属性.
说白了就是控制这个界面的文件可以理解为界面的代码表示~~
为什么需要Controller类文件
用来绑定这个fxml文件用的用于控制这个界面的一些操作实现一些功能~~
1.弄明白了之后我们现在项目中创建两个文件如下
创建一个fxml文件
创建一个Controller类文件
然后修改一下这个fxcontroller
里面的属性
2.然后右键点击这个test.fxml
点击Open In SceneBuilder
3.然后就会弹出如下界面也就是刚刚介绍过的SceneBuilder
4.3 自定义界面
下面随意做个栗子
1.随便拉一个button控件到白色区域
2.然后可以在右边的properties属性栏更改这个按钮的样式外观等等例如我这里随便改了个hehe。
3.下面还有个code代码栏里面可以设置这个按钮的id点击事件等等例如我这里也改成了hehe你们也可以改成xxxbutton这样便于开发
4.点击上方有个preview按钮可以预览我们当前设置好的界面
5.点击view选择Show Sample Controller Skeleton可以直接显示Controller类的代码骨架特别方便
6.此时只需要复制这段代码到我们之前创建的TestController类中就行了。
7.别忘了点保存啊点击File然后点击save然后我们之前创建的fxml文件就会自动补代码~~是不是很方便
8.原来的fxml文件就加入了button标签还有对应的属性
4.4 运行我们的程序
上述两个文件弄好了之后我们只需要创建一个入口类就能运行起我们的程序了。
首先再创建一个Main类然后把下面的代码复制进去至于为什么可先不管不懂可以私信博主文章后面会简要说一下原理
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import java.util.Objects;
/**
* @author Dianzhi Han
* @version 1.0
* @description: TODO
* @date 2022/11/18 12:45
*/
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(Objects.requireNonNull(getClass().getClassLoader().getResource("test.fxml")));
primaryStage.setTitle("test");
primaryStage.setScene(new Scene(root, 1300, 1000));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
然后点运行就可以了~~
可以根据自己的功能需求在click方法中修改你点击按钮可以实现的功能~
五、拓展
- 之前我们创建的那个Controller类通常需要实现Initializable接口并重写里面的initialize方法。用于在界面初始化的时候初始化一些比如数据库数据表之类的东西
- 执行程序的顺序是 init() -> start() -> stop()我们入口类Main就是继承了Application抽象类并重写了它的start()方法而Controller类则可以重写init()方法来做一些初始化相关的工作。
拿上面的按钮例子来解释一下标签中的属性是干嘛的吧~
fx:id
指的就是这个控件的id值为的是在Controller类中控制这个控件onAction
指的是点击这个按钮就能实现什么功能text
指的就是这个按钮的文本- 其余那些就是控制按钮大小的
总结
以上是博主千辛万苦纯手打的JavaFX的入门教程以及SceneBuilder使用如果小伙伴们有什么不懂得可以直接私信博主有帮助的话麻烦点赞+收藏关注您得支持是博主更新得最大动力~