java FXML生成的代码

java FXML生成的代码,java,javafx-2,fxml,Java,Javafx 2,Fxml,我在大学学习编程,二年级了,我开始学习java fxml scene builder。我知道基本知识以及如何将代码与@FXML连接起来等等。但是我有一个大问题。因此,我基本上创建了我的窗口、一些组合框等,但是java场景生成器generetes的代码有错误,我无法编译。我将向您展示代码: <?xml version="1.0" encoding="UTF-8"?> <?import java.lang.*?> <?import java.util.*?> &

我在大学学习编程,二年级了,我开始学习java fxml scene builder。我知道基本知识以及如何将代码与@FXML连接起来等等。但是我有一个大问题。因此,我基本上创建了我的窗口、一些组合框等,但是java场景生成器generetes的代码有错误,我无法编译。我将向您展示代码:

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

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

<AnchorPane id="AnchorPane" prefHeight="582.0" prefWidth="804.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="lab001.InterFaceGraficaController">
  <children>
    <Label fx:id="label" layoutX="126.0" layoutY="120.0" minHeight="16.0" minWidth="69.0" />
    <Label layoutX="64.0" layoutY="363.0" text="Label" />
    <Label layoutX="64.0" layoutY="199.0" text="Label" />
    <Label layoutX="64.0" layoutY="412.0" text="Label" />
    <Label layoutX="47.0" layoutY="59.0" text="Label" />
    <Button id="a" layoutX="115.0" layoutY="508.0" mnemonicParsing="false" onAction="#adicionar" text="add" />
    <Button layoutX="229.0" layoutY="510.0" mnemonicParsing="false" onAction="#limpar" text="limpar" />
    <ComboBox fx:id="combo" layoutX="111.0" layoutY="410.0">
      <items>
        <FXCollections fx:factory="observableArrayList">
          <String fx:value="Item 1" />
          <String fx:value="Item 2" />
          <String fx:value="Item 3" />
        </FXCollections>
      </items>
    </ComboBox>
    <TextArea fx:id="txtA" layoutX="121.0" layoutY="114.0" prefWidth="200.0" wrapText="true" />
    <Slider fx:id="sl" blockIncrement="1.0" layoutX="121.0" layoutY="365.0" majorTickUnit="2.0" max="10.0" min="1.0" minorTickCount="1" showTickLabels="true" showTickMarks="true" snapToTicks="true" value="0.0" />
    <ListView fx:id="filmes" layoutX="539.0" layoutY="152.0" prefHeight="200.0" prefWidth="200.0" />
    <TextField fx:id="txt" layoutX="100.0" layoutY="56.0" prefWidth="200.0" />
  </children>
</AnchorPane>

我得到了如下错误:JavaFX.scene.layout.anchorpane不支持属性控制器


这是与jdk相关的错误吗?因为这是纯自动生成的代码,所以我没有碰它。

您使用的是什么版本的SceneBuilder?您试图在哪个版本的Java下运行?那将是追踪这件事的第一步


另外,确保您的控制器具有无参数构造函数。这将是第二个要检查的地方(尽管我相信这通常会导致反射错误)。

您使用的是什么版本的SceneBuilder?您试图在哪个版本的Java下运行?那将是追踪这件事的第一步


另外,确保您的控制器具有无参数构造函数。这将是第二个要检查的地方(尽管我相信这通常会导致反射错误)。

我刚刚复制了整个FXML,并在相应的包中编写了相应的控制器,得到了以下结果:

如何复制:

  • 创建新的FXML项目(确保类路径中包含JavaFXlib,或者需要使用Java8)
  • 创建新包
    lab001
  • 使用此内容创建一个名为
    Main.java
    的新类

  • 使用此内容创建名为
    InterFaceGraficaController
    的新类

公共类接口安全控制器{
@FXML标签;
@FXML组合框组合;
公共接口安全控制器(){
System.out.println(“init”);
}
@FXML私有void adicionar(){}
@FXML私有void limpar(){}
}
并添加给定的FXML, 如果你仍然出错,你需要pastebin你的errorlog编辑你的帖子来显示你的进度


编辑:只是为了确保;您的控制器必须具有您在SceneBuilder中添加的功能,否则它无法像您的案例中的
adicionar
那样绑定它们。

我刚刚复制了您的整个FXML,并在相应的包中编写了相应的控制器,得到了以下结果:

如何复制:

  • 创建新的FXML项目(确保类路径中包含JavaFXlib,或者需要使用Java8)
  • 创建新包
    lab001
  • 使用此内容创建一个名为
    Main.java
    的新类

  • 使用此内容创建名为
    InterFaceGraficaController
    的新类

公共类接口安全控制器{
@FXML标签;
@FXML组合框组合;
公共接口安全控制器(){
System.out.println(“init”);
}
@FXML私有void adicionar(){}
@FXML私有void limpar(){}
}
并添加给定的FXML, 如果你仍然出错,你需要pastebin你的errorlog编辑你的帖子来显示你的进度


编辑:只是为了确保;您的控制器必须具有您在SceneBuilder中添加的功能,否则它不能像您的情况下的
adicionar
那样绑定它们。

在您的代码中,您拥有的是AnchorPane部分

xmlns:fx="http://javafx.com/fxml/1"
如果创建一个新项目->JavaFX->JavaFXML应用程序,则该行的URL末尾没有/1。一旦在场景生成器中向场景添加了某些内容,它将变回/1,并给出您提到的错误

我和你有同样的问题,除了即使它有这些错误,它仍然运行良好。我不知道是否应该删除/1


使用WinXPsp3和Netbeans 7.4.1、JDK 7_40、Scene Builder 1.1

将代码的主播部分

xmlns:fx="http://javafx.com/fxml/1"
如果创建一个新项目->JavaFX->JavaFXML应用程序,则该行的URL末尾没有/1。一旦在场景生成器中向场景添加了某些内容,它将变回/1,并给出您提到的错误

我和你有同样的问题,除了即使它有这些错误,它仍然运行良好。我不知道是否应该删除/1


使用WinXPsp3和Netbeans 7.4.1、JDK 7_40、Scene Builder 1.1时,我遇到了同样的问题

要解决此问题,请将此代码添加到.FXML文件的第一行:

  <AnchorPane xmlns:fx="http://javafx.com/fxml" >

我也有同样的问题

要解决此问题,请将此代码添加到.FXML文件的第一行:

  <AnchorPane xmlns:fx="http://javafx.com/fxml" >

。我认为在名称空间中保留
/1
是一个好主意。FXML版本1是唯一发布的版本(即使是最新的Java8版本也只使用FXML版本1)。您可以通过
System.out.println(fxmloader.FX\u NAMESPACE\u version)
确定JavaFX运行时支持的FXML的最大版本。。我认为在名称空间中保留
/1
是一个好主意。FXML版本1是唯一发布的版本(即使是最新的Java8版本也只使用FXML版本1)。您可以通过
System.out.println(fxmloader.FX\u NAMESPACE\u version)
确定JavaFX运行时支持的FXML的最大版本。