我在Eclipse的Scene Builder for JavaFX项目中创建了一个非常简单的fxml。 当我尝试运行它时,由于找不到控制器类,我得到LoadException。
所有文件都在同一个文件夹中。
Main.java:
package application;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
AnchorPane mainAnchorPane = (AnchorPane) FXMLLoader.load(Main.class.getResource("Q1.fxml"));
primaryStage.setScene(new Scene(mainAnchorPane));
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
这里是fxml文件:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.Pane?>
<fx:root prefHeight="417.0" prefWidth="462.0" type="AnchorPane" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="myController">
<children>
<Pane layoutX="-245.0" layoutY="-261.0" prefHeight="94.0" prefWidth="117.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<children>
<Button fx:id="myButton" layoutX="14.0" layoutY="14.0" mnemonicParsing="false" onAction="#onMyClick" text="Button" />
<Label fx:id="myLabel" layoutX="14.0" layoutY="53.0" text="Label" />
<TextField fx:id="myField" layoutX="66.0" layoutY="49.0" />
</children>
</Pane>
</children>
</fx:root>
这里是controller.java:
package application;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
public class myController {
@FXML
private Button myButton;
@FXML
private Label myLabel;
@FXML
private TextField myField;
@FXML
void onMyClick(ActionEvent event) {
}
}
的屏幕截图
如果你能告诉我导致问题的原因,我将不胜感激。
答案 0 :(得分:0)
我找到了它(Facepalm)。
控制器应该命名为:&#34; application.myController&#34;因为我的包被称为应用程序。