FXML解析太慢时JavaFX中的忙弹出窗口
FXML性能是JavaFX的一个问题,如果您有复杂的屏幕,并且将它们划分为使用FXML的小组件(为了可维护性/重用),那么它会变得非常慢 由于FXML解析是在UI线程中进行的(不确定这一点,它仍然会阻止JavaFX应用程序线程),因此在处理FXML时,您无法在JavaFX中显示glasspane/popup/etc 我发现的唯一解决方法是在加载FXML时使用Swing弹出窗口(因为它在Swing UI线程中,您仍然可以显示一些内容)向用户提供反馈(它正在工作/不是错误/稍等),并在不再解析FXML文件时关闭它 为此,我在FXMLLoader上构建了一个外观。此外,这也适用于OpenGL库(例如,LWJGL,而不是Swing,任何属于UI且不在JavaFX应用程序线程工作中的东西) 我想知道是否存在更好的解决方案(仅限于JavaFX,而不是混合UI框架),因为这人为地增加了项目的复杂性,并且无法与OpenJFX端口很好地移植。推荐的解决方案 使用JavaFX8U40+,您可以找到一个 对于8u40,修复了以下错误:FXML解析太慢时JavaFX中的忙弹出窗口,java,javafx,javafx-8,fxml,fxmlloader,Java,Javafx,Javafx 8,Fxml,Fxmlloader,FXML性能是JavaFX的一个问题,如果您有复杂的屏幕,并且将它们划分为使用FXML的小组件(为了可维护性/重用),那么它会变得非常慢 由于FXML解析是在UI线程中进行的(不确定这一点,它仍然会阻止JavaFX应用程序线程),因此在处理FXML时,您无法在JavaFX中显示glasspane/popup/etc 我发现的唯一解决方法是在加载FXML时使用Swing弹出窗口(因为它在Swing UI线程中,您仍然可以显示一些内容)向用户提供反馈(它正在工作/不是错误/稍等),并在不再解析FXM
您也可以尝试此解决方案,然后可能不会出现FXML加载缓慢的问题(因为不再有任何FXML,它已转换为Java)。但我不知道该解决方案目前是否足够成熟和稳定,以满足您的需要。谢谢,我会尝试一下。编译FXML有很多问题,它会生成使用不推荐的生成器API的代码。此外,fx:root似乎与它不兼容。它可以工作。非常好。我将看看现在如何处理F的异步构建XML组件。