IDEA中JDK11使用JavaFX的相关问题

突发奇想的研究了一波在JDK11上跑JavaFX

  • 遇到的第一个问题,怎么用maven来处理JavaFX的依赖关系
    • 习惯使用maven所以第一想到的就是用maven处理JavaFX于是在某个群里问了一下JavaFX的maven依赖的一个重要指标
    	org.openjfx
    
    • 于是乎在maven中央仓库找这个,发现了一组很有节奏感的包 IDEA中JDK11使用JavaFX的相关问题_第1张图片
    • 点了一个进去看了下,发现版本号跟JDK版本号类似,于是调出了不知道什么时候丢在记忆角落里的一句话,FX版本跟随JDK版本,但经发现JDK11也可以使用FX12的库 IDEA中JDK11使用JavaFX的相关问题_第2张图片
    • 下面是所有FX的依赖,当然版本号嘛自己用哪个自己去仓库看,下面贴一波JDK环境

	12.0.2



	
		org.openjfx
		javafx-base
		${fx.version}
	

	
		org.openjfx
		javafx-graphics
		${fx.version}
	

	
		org.openjfx
		javafx-controls
		${fx.version}
	

	
		org.openjfx
		javafx-media
		${fx.version}
	

	
		org.openjfx
		javafx-web
		${fx.version}
	

	
		org.controlsfx
		controlsfx
		11.0.0
	

	
		com.jfoenix
		jfoenix
		9.0.9
	



	
		
			org.apache.maven.plugins
			maven-compiler-plugin
			3.1
			
				11
				11
			
		

		
			org.openjfx
			javafx-maven-plugin
			0.0.3
			
				启动类完全限定名
			
		
	

实在跑不起来时用此下面的方法

  • 写完这个后只能说创建个空白窗口是可以运行的,但是只要一放组件就绝对报一大波错误,其中有一条一定是跟模块无法访问有关,跟模块有关,
  • 哪么就是JDK版本的模块化问题啦,首先应该想到怎么去访问模块,于是进行一波下面的设置,这个设置文件是module-info.java我是把它放在src/main/java下的
// login是我的工程名,当然在idea中工程也是一个模块,所以也可以说是某个自己创建的模块名
module login {
	requires javafx.base;
	requires javafx.controls;
	requires javafx.graphics;
	// 下面注释掉的在网上有个人解释是暴露这个模块给某些模块访问,这个方法是可行的,我试过了
	// opens cn.lotus.app to javafx.graphics,javafx.controls,javafx.base;
	// exports这个是将某个包导出去,感觉跟上面的opens效果差不多,可能是写得不够多吧,
	// 个人习惯用这种方法,如果没有写opens或exports是运行不了程序的
	exports cn.lotus.app;
}

效果图

IDEA中JDK11使用JavaFX的相关问题_第3张图片IDEA中JDK11使用JavaFX的相关问题_第4张图片

转载于:https://my.oschina.net/mistylinux/blog/3083877

你可能感兴趣的:(IDEA中JDK11使用JavaFX的相关问题)