JavaFX 8:来自内部类的自定义控制器

时间:2020-06-15 20:53:24

标签: java javafx

问题

尝试在ClassNotFoundException内使用自定义控制器时得到Joystick.java
这是我的文件层次结构:

--view
----MainWindow.java
----mainWindow.fxml
----Joystick
------Joystick.java
------joystick.fxml

mainWindow.fxml中,有以下几行:

<?import view.Joystick.Joystick?>
...
    <Joystick fx:id="manualJsk" layoutX="459.0" layoutY="195.0" />

我想显示我的自定义控制器,但是尽管导入了ClassNotFoundException,但我一直得到它。 有趣的是,如果我将文件移到view包中,一切都会正常工作:

--view
----MainWindow.java
----mainWindow.fxml
----Joystick.java
----Joystick
------joystick.fxml

...这让我觉得import不好。为什么会这样?

例外

java.lang.ClassNotFoundException: view.Joystick$Joystick
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadTypeForPackage(FXMLLoader.java:2931)
    at javafx.fxml/javafx.fxml.FXMLLoader.loadType(FXMLLoader.java:2920)
    at javafx.fxml/javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2861)
    ... 15 more

编辑: 操纵杆代码

public class Joystick extends Pane {
    public Joystick() {
        super();

        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(getClass().getResource("joystick.fxml"));
        loader.setRoot(this);
        try {
            loader.load();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

joystick.fxml

<fx:root xmlns:fx="http://javafx.com/fxml" type="javafx.scene.layout.Pane">
    <children>
        <Button text="Click Me"/>
    </children>
</fx:root>

0 个答案:

没有答案
相关问题