1

我在大学学习编程,现在是第二年,我开始使用 java fxml 场景构建器。我知道基础知识以及如何将代码与@FXML 事物等联系起来。但我有一个大问题。所以,我基本上创建了我的窗口、一些组合框等,但是代码 java 场景生成器生成器带有错误,我无法编译。我将向您展示代码:

<?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 相关的错误吗?因为这是纯自动生成的代码,所以我没有碰过它。

4

4 回答 4

1

我只是复制了你的整个FXML并在相应的包中编写了相应的Controller并得到了这个结果: http: //puu.sh/4uZsk.png

如何复制:

  • 创建新的 FXML 项目(确保您的 ClassPath 中包含 JavaFX Lib 或者您需要使用 Java 8)
  • 创建新包lab001
  • 创建一个Main.java使用此内容调用的新类

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            Parent root = FXMLLoader.load(this.getClass().getResource("application.fxml"));
            Scene scene = new Scene(root,400,400);
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        launch(args);
    }
}
  • 创建一个InterFaceGraficaController使用此内容调用的新类

public class InterFaceGraficaController {

    @FXML Label label;
    @FXML ComboBox<String> combo;

    public InterFaceGraficaController() {
        System.out.println("init");
    }

    @FXML private void adicionar() {}
    @FXML private void limpar() {}
}

并添加您给定的 FXML,如果您仍然遇到错误,您想要粘贴您的错误日志编辑您的帖子以显示您的进度。

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

于 2013-09-19T11:05:04.897 回答
0

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

xmlns:fx="http://javafx.com/fxml/1"

如果您创建一个新项目 -> JavaFX -> JavaFXML App,则该行的 URL 末尾没有 /1。一旦您在 Scene Builder 中向场景添加内容,它就会变回 /1 并给出您提到的错误。

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

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

于 2013-10-07T16:59:34.287 回答
0

您使用的是哪个版本的 SceneBuilder?您尝试在哪个版本的 Java 下运行?那将是开始追踪此事的第一个地方。

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

于 2013-09-18T17:43:46.290 回答
0

我有同样的问题 。

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

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

如果这解决了您的问题,您应该更新您的 netbeans。

看到这个

于 2014-05-29T16:53:22.147 回答