<?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相关的错误吗?因为这是纯粹的自动生成代码,我没有触及它。
答案 0 :(得分:1)
我刚刚复制了你的整个FXML并在相应的包中写了相应的Controller并得到了这个结果:http://puu.sh/4uZsk.png
如何复制:
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, 如果您仍然收到错误,您希望 pastebin 错误日志和编辑帖子以显示您的进度。< / p>
编辑:只是为了确保;您的控制器必须具有您在SceneBuilder中添加的功能,否则它不能像adicionar
那样绑定它们。
答案 1 :(得分:0)
您使用的是哪种版本的SceneBuilder?您试图在哪个版本的Java下运行?这将是第一个开始追踪这一点的地方。
此外,请确保您的控制器具有no-args构造函数。这将是第二个检查的地方(尽管这通常会导致反射错误,我相信)。
答案 2 :(得分:0)
在你的代码的AnchorPane部分你有
xmlns:fx="http://javafx.com/fxml/1"
如果您制作新项目 - &gt; JavaFX - &gt; JavaFXML App,该行在URL的末尾没有/ 1。只要在Scene Builder中向场景添加内容,它就会变回/ 1,并且它会给出您提到的错误。
我遇到了和你一样的问题,即使它有这些错误,它仍然运行良好。我不知道是否应该删除/ 1。
使用WinXPsp3和Netbeans 7.4.1,JDK 7_40,Scene Builder 1.1
答案 3 :(得分:0)
我遇到了同样的问题。
要解决此问题,请将此代码添加到.FXML文件的第一行:
<AnchorPane xmlns:fx="http://javafx.com/fxml" >
如果此dosnt解决了您的问题,您应该更新您的netbeans。
请参阅this