php小编苹果为您带来关于使用JavaFX的Java库的问答内容。JavaFX是Java平台上的现代图形用户界面工具包,为开发人员提供了丰富的图形化应用程序开发功能。本文将回答关于JavaFX库的使用问题,帮助您更好地利用JavaFX进行开发。让我们一起来探索JavaFX库的奥秘吧!
如何创建一个使用 javafx 窗口的 java 库(该库具有绘图功能,能够创建弹出窗口),而无需扩展 application
javafx 类的类,以及如何发送使用我的创建的应用程序作为 fatjar 的库?
我正在开发一个数据帧库,因为我需要一个可序列化的表/数据帧。我没有找到任何实现可序列化的java数据帧库。我的图书馆快完成了。主要逻辑工作完美等。我的库将具有绘图函数来绘制表数据。我已经通过“chart-fx”库实现了此功能。我创建了一个起点类(“具有静态主函数的类”)来测试我的库并查看绘图是否正常。在 intellij ide 中执行时一切运行良好。但是当我在maven中生成一个包(fatjar)并运行生成的jar时,我收到错误:“java.lang.unsupportedoperationexception:无法解析'fa-arrows-alt'
”。
我认为在我的库的实现中最奇怪的事情是,当我开发一个库而不是一个应用程序时,我在创建 javafx 应用程序时没有遵循标准线,即创建一个扩展 application 类的类javafx。
相反,我使用静态方法“platform.startup(“这里带有我的javafx代码的lambda函数”)
”。
下面是使用“-dprism.verbose=true
”选项运行生成的 fatjar 时的控制台日志。
jan. 25, 2024 3:55:38 PM com.sun.javafx.application.PlatformImpl startup WARNING: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @3b192d32' Prism pipeline init order: d3d sw Using Double Precision Marlin Rasterizer Using dirty region optimizations Not using texture mask for primitives Not forcing power of 2 sizes for textures Using hardware CLAMP_TO_ZERO mode Opting in for HiDPI pixel scaling Prism pipeline name = com.sun.prism.d3d.D3DPipeline Loading D3D native library ... succeeded. D3DPipelineManager: Created D3D9Ex device Direct3D initialization succeeded (X) Got class = class com.sun.prism.d3d.D3DPipeline Initialized prism pipeline: com.sun.prism.d3d.D3DPipeline Maximum supported texture size: 16384 Maximum texture size clamped to 4096 OS Information: Windows version 10.0 build 19042 D3D Driver Information: NVIDIA GeForce GT 710 \\.\DISPLAY1 Driver nvldumdx.dll, version 27.21.14.5671 Pixel Shader version 3.0 Device : ven_10DE, dev_128B, subsys_118B10DE Max Multisamples supported: 4 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. java.lang.UnsupportedOperationException: Cannot resolve 'fa-arrows-alt' at org.kordamp.ikonli.AbstractIkonResolver.resolve(AbstractIkonResolver.java:61) at org.kordamp.ikonli.javafx.IkonResolver.resolve(IkonResolver.java:73) at org.kordamp.ikonli.javafx.FontIcon.setIconLiteral(FontIcon.java:251) at org.kordamp.ikonli.javafx.FontIcon.<init>(FontIcon.java:92) at io.fair_acc.chartfx.plugins.Zoomer.getZoomInteractorBar(Zoomer.java:421) at io.fair_acc.chartfx.plugins.Zoomer.<init>(Zoomer.java:148) at io.fair_acc.chartfx.plugins.Zoomer.<init>(Zoomer.java:252) at io.fair_acc.chartfx.plugins.Zoomer.<init>(Zoomer.java:243) at sst.visualization.chartFxBased.LineChart.lambda$plot$1(LineChart.java:85) at com.sun.javafx.application.PlatformImpl.lambda$startup$5(PlatformImpl.java:294) at com.sun.glass.ui.Application.invokeAndWait(Application.java:470) at com.sun.javafx.tk.quantum.QuantumToolkit.runToolkit(QuantumToolkit.java:377) at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$startup$10(QuantumToolkit.java:290) at com.sun.glass.ui.Application.lambda$run$1(Application.java:155) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:185) at java.base/java.lang.Thread.run(Thread.java:1583) vsync: true vpipe: true
1 - 使用“--module-path
”和“--add-modules
”运行我的程序。完整控制台命令:“java --module-path c:/javafx-jmods --add-modules javafx.base -jar sst-0.0.1.0-withdependency.jar
”。将“javafx.base”更改为另一个模块名称时,我收到“module javafx.base not found
”错误。
2 - 将“javafx-maven-plugin
”添加到我的 pom.xml 中。好像没有效果。
我记得几天前我创建了一个 javafx 应用程序,它扩展了已运行的应用程序类 i。
因为我对“platform.startup
”的用法感到奇怪,所以告诉我这是否是创建不是应用程序的javafx图的正确方法(在屏幕上创建弹出窗口的通用东西)。因为关于 javafx 的几乎一切都很复杂,更侧重于应用程序。我什至不确定 javafx 的安装。我不想做一门课程,甚至不想读书,不想浪费一个月的学习时间来学习我做过的事情(绘制我的数据框图表)。
当使用javafx到非应用程序时,可以使用“Platform.startup”静态方法。您可以将 Maven 依赖项添加到您的 pom 中,而无需安装 javafx 的 .jmods 或使用 java 模块系统。
特别是对于“chart-fx”库使用的库“ikonli”,会导致在生成 fatJar 时替换依赖项服务的问题(“位于 META-INF/jar 服务中的文件”)。为了避免替换服务文件并合并它们,需要添加特定的 maven resource transformer “ServiceResourceTransformer
”,以便在需要时合并服务内容。
学到的东西:
感谢: @Sedj601、@jwelsea 和 @Slaw 寻求帮助。
The above is the detailed content of Java library using javafx. For more information, please follow other related articles on the PHP Chinese website!