【JavaFX】JavaFX11开发踩坑记录

文章目录

技术栈

  • JavaFX 11
  • Maven
  • JDK 11

踩坑记录

这些坑对于初学者很容易踩,JavaFX经常会报错空指针异常遇到其中一个问题可能就会消耗好几天的时间。

JavaFX 采用的是MVC架构设计,页面设计使用 fxml文件;业务逻辑采用Controller,并在Controller中使用@FXML注解以及 fx :id="xxx"来绑定fxml文件中的组件;

JDK 8 以上的版本之后,JavaFX需要单独导入,所以为了提高项目依赖的可维护性,采用了Maven项目管理。


OK,下面进入正题,由于是本人开发中遇到的问题,出现的报错可能存在其他解决方法,恳请指正。

  1. 显式创建对象
    在需要调用Service的Controller类中,必须显式创建对象

比如架构设计如下图,定义一系列接口xxxService,并使用xxxServiceImpl来实现服务类。

在对应的Controller层,应显式创建对象。

java 复制代码
public class PaneSshController{
 //调用SftpService的实现类
     SftpServiceImpl sftpService = new SftpServiceImpl();
@FXML
void initialize(){
	.....
	}
}

如果你写成:

java 复制代码
public class PaneSshController{
 //调用SftpService的实现类
     SftpServiceImpl sftpService;
@FXML
void initialize(){
	.....
	}
}

不会报错,Controller不会报错,但是启动后会报错空指针异常。

  1. 请删除多余组件

Controller使用@FXML注册绑定某个组件或者事件时,如果fxml中绑定的组件或者方法被更改,但是Controller类不会报错,运行启动程序会报错加载异常。所以@FXML一定要有效绑定,被删除的组件记得及时删除在Controller绑定的方法或组件。

  1. 初始化ObservableList

ObservableList的数组定义和初始化:

java 复制代码
ObservableList<File> fileList = FXCollections.observableArrayList();

不要使用

java 复制代码
ObservableList<File> fileList =new ObservableList();

否则会出现如下报错:

后面有待更新...有点忙...

相关推荐
leikooo3 小时前
用餐厅和盘子理解栈和堆
java·数据结构·链表·rust
Ivanqhz4 小时前
激活函数在 Transformer 中的作用及各种变体简述
java·linux·数据库·人工智能·深度学习
沙漠之主4 小时前
C++编程教学设计资料:从入门到实战的完整课程方案
java·前端·c++
FPGA小徐4 小时前
PA1 基础设施(2)深度解析:NEMU 中 ITRACE、MTRACE、FTRACE、IRINGBUF、ETRACE、DIFFTEST 全解析
java·服务器·网络
YOLO数据集集合5 小时前
EvoAgent:面向PR研发治理的自进化Multi-Agent Harness系统
java·开发语言·目标检测·agent·自进化
知行EDI5 小时前
知行之桥 MaBang 端口使用指南——Create Order 订单创建篇
java·服务器·数据库
笑鸿的学习笔记5 小时前
C++笔记之大块顺序写
java·c++·笔记
打工仔折腾 AI5 小时前
从 Demo 到生产级 Agent:8 个关键设计机制与 Python 实现拆解
java·jvm·人工智能·后端·python·langchain·ai agent 实战
殷色玫瑰6 小时前
C/C++ 内存管理详解:从内存分布到 new/delete 底层原理
java·linux·c语言·c++
青山木8 小时前
Hot 100 --- 编辑距离
java·数据结构·算法·leetcode·动态规划