为什么SceneBuilder 2.0无法打开我的FXML文件?

34

我有一个使用SceneBuilder 2.0创建的fxml文件。该文件用于我正在使用Netbeans 8开发的JavaFx项目中。今天,SceneBuilder无法处理我的文件。当我尝试打开它时,SceneBuilder会最小化并且无法打开文件。我的场景图中没有自定义组件。

我将文件内容复制到一个新的fxml文件中,并赋予其一个新名称。然后,SceneBuilder能够打开这个文件,即使其内容与无法打开的文件完全相同。

这里发生了什么?

抱歉,我无法发布fxml文件内容。


考虑到所描述的行为,唯一可能的原因是它无法正确处理某些奇怪的字符编码。 - Mansueli
需要一些时间来响应,请耐心等待,它一定会起作用的。 - VaTs
可能是因为您打开了另一个同名的FXML文档! - Smaillns
尝试运行应用程序!重试。 - Smaillns
尝试运行应用程序!重试。 - Smaillns
7个回答

113

好的..所以我在寻找这个奇怪问题的解决方案!看到其他答案都没能解决我的问题,我想到了最随意的方法,结果它起作用了。

打开 SceneBuilder(一个全新的)。转到文件 > 最近打开 > 清除菜单。关闭 Scene Builder。

现在应该已经修复了这个bug(对我有效)

PS:我很惭愧地发布这个答案。但由于这是一个浪费时间的令人讨厌的bug,我不希望别人再浪费时间。

PPS:此外,我无法再次检查此解决方案,因为它对我有用并且我无法再创建出问题场景。


2
对我有用。谢谢! - Abdelwahed
3
运作得很好。我无法打开两天前创建的特定文件,但其他文件没有问题... - Zuop
1
不错的技巧!每当出现错误的情况时,这个技巧总是对我有用。 - BradStell
1
谢谢!你刚刚为我节省了很多时间! - Ladislav Ondris
1
非常好,谢谢。 - Tursko
显示剩余3条评论

5
我通过使用alt+tab切换到SB程序,并将窗口最大化解决了这个问题(快捷键:window键+上箭头键)。
似乎是一个SB程序的bug。

你怎么会想到尝试那个!?它可以工作,是确认的解决方案。 - Neil

3

我有同样的问题。看起来这是一个bug。

我通过创建一个新的FXML文件(空文件),并将原始FXML文件的所有代码复制到其中来解决了它。新的FXML文件可以在SceneBuilder中打开。


2

我也在Win 7上遇到了这个问题。诀窍是右键单击SB任务栏图标,最大化窗口,通过标题栏将其拖动向下,然后会出现一个非常小的窗口,重新调整窗口大小即可解决。我认为这是SB显示Bug。祝你好运。


1
非常感谢,但是要右键点击时不需要在任务栏图标本身上进行操作,只需将鼠标悬停在图标上,然后单击出现的面板上的右键,然后最大化它即可。 - Mateus Viccari
我想验证这个答案,不知道为什么 OP 没有接受这个答案。我遇到了同样的问题,这个技巧似乎可以解决它。我所做的就是将在 Windows 上创建的项目复制到 Ubuntu 上。在 Linux 场景构建器中打开 FXML,进行一些更改,然后再复制回 Window,突然间 Windows 版本的场景构建器无法打开它,只显示一些看不见的窗口。现在每次都能正确地打开。可能是某种奇怪的显示错误,或者是 Linux 场景构建器添加了一些 Windows 版本的场景构建器完全不喜欢的字符。 - Indigo

1
对于我来说,问题出在我在FXML文件中提供的图像路径上。 通过使用@后面跟着图像路径,我能够解决这个问题。 使用这种语法错误,您将能够运行应用程序,但场景构建器将拒绝打开该文件。
例如(假设您提供了相对路径):
错误的语法:
               <ImageView fitHeight="31.0" fitWidth="40.0" pickOnBounds="true" preserveRatio="true" >
                   <image>
                       <Image url="img/image.png"></Image>
                   </image>
               </ImageView>

正确的语法:

               <ImageView fitHeight="31.0" fitWidth="40.0" pickOnBounds="true" preserveRatio="true" >
                   <image>
                       <Image url="@/img/1000px-evobus.svg1.png"></Image>
                   </image>
               </ImageView>

1

我花了大约4个小时才解决了这个问题。在我的FXML文档中,有一个带有</child>标签的FlowPane。我将其更改为<child></child>,然后它就可以工作了。SceneBuilder打开了FXML文档。我知道这很傻,我无法解释为什么会发生这种情况,但我可以重现它。


0
在NetBeans中,转到“工具”;“选项”;“Java”;“JavaFX”,并设置路径为Scene Builder Home。这样应该可以解决问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接