Java FXScene Builder加载到NetBeans时抛出错误

Java FXScene Builder加载到NetBeans时抛出错误,java,netbeans,javafx,Java,Netbeans,Javafx,在解决方案的最后阶段,我尝试将fxml集成到java中,以实现GUI,但它会在自动生成的代码上抛出错误: <TableView layoutX="297.0" layoutY="156.0" prefHeight="237.0" prefWidth="523.0"> <columns> <TableColumn editable="false" prefWidth="64.0" text="Element" /> <T

在解决方案的最后阶段,我尝试将fxml集成到java中,以实现GUI,但它会在自动生成的代码上抛出错误:

  <TableView layoutX="297.0" layoutY="156.0" prefHeight="237.0" prefWidth="523.0">
    <columns>
      <TableColumn editable="false" prefWidth="64.0" text="Element" />
      <TableColumn editable="false" prefWidth="171.0" text="Weight Fraction" />
        <TableColumn editable="false" prefWidth="188.0" text="Atom Fraction" />
    </columns>
     <columnResizePolicy>
        <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" /> <-------
     </columnResizePolicy>
  </TableView>
考虑到我在遵循上的指南时已经遇到了问题,特别是关于拖放功能(将对象拖动到make控制器中只会产生xml而不是我可以使用的任何东西),这就更加令人困惑了。

根据:

元素创建对类常量的引用

这在JavaFX2.2及更高版本中应该可以正常工作。此问题已在中修复:

如果您使用的是JavaFX的早期版本,则必须对其进行升级


从您提供的链接来看,您似乎正在使用
SceneBuilder 1.0
,这可能是问题的原因之一。尝试升级它。

这是一个可用的FXML文档:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>


<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <TableView layoutY="-1.0" prefHeight="400.0" prefWidth="600.0">
        <columns>
          <TableColumn editable="false" prefWidth="75.0" text="Element" />
          <TableColumn editable="false" prefWidth="75.0" text="Weight Fraction" />
            <TableColumn editable="false" prefWidth="75.0" text="Atom Fraction" />
        </columns>
         <columnResizePolicy>
            <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
         </columnResizePolicy>
      </TableView>
   </children>
</Pane>

这与上面的内容大致相同,只是它包含了文件的其余结构。您必须确保您的
TableView
控件嵌套在
容器中
,但我假设您已经有了它

然后在启动代码中,必须创建一个
fxmloader
并加载此FXML文档,它将自动生成所有UI视图代码。您必须有一个控制器,并且可以在运行时通过
fxmloader
指定控制器,或者在FXML文档中指定它(在SceneBuilder的左下方查找粘贴控制器的package.subpackage.ClassName的位置)

下面是一个从磁盘加载FXML的项目示例:

下面是一个更简单的项目示例:


尽管IDE中显示了此错误,但应用程序仍将正确构建和运行。但是,看到到处都是错误的红色解释点令人恼火。因此,在应用修复之前,安全的替代方法是使用TableView的columnResizePolicy方法在java代码中设置此属性:

myTableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);

确保您使用的是SceneBuilder 2.0,因为在预发布版本和JavaFX8(SceneBuilder 2.0支持)之间,JavaFX的规范/API有很多变化刚刚检查并确认2.0这不是一个打字错误吗?
CONSTRANIED\u RESIZE\u POLICY
->
CONSTRAINED\u RESIZE\u POLICY
?事实上,代码是复制粘贴的,错误是手工键入的,正在修复。我只知道,它是根据JavaFX场景生成器生成的,保存时生成一个.fxml。fxml很好,您使用的是哪个JavaFX版本ng?那么你必须升级它,修复程序是为JavaFX2.2制作的。如果你使用早期版本,fxml无法识别它。请检查答案中链接的问题。从哪里得到2.2?我必须通过Oracle查找此下载,并且没有其他下载选项。安装。它随JavaFX8提供,这是最新的,并且是t他推荐使用这个版本。
myTableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);