是否可以在FXML代码中实例化自定义类?

时间:2016-04-20 16:44:40

标签: wpf xaml javafx fxml

我已将javafx.scene.canvas.Canvas类扩展为可调整大小。 是否可以在FXML中编写与此类似的内容?

<ResizableCanvas fx:id="..." ></ResizableCanvas >

如果我这样做,我会得到一个例外:

javafx.fxml.LoadException: ResizableCanvas is not a valid type.
    at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2597)
    at javafx.fxml.FXMLLoader.createElement(FXMLLoader.java:2774)
    at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2704)

这意味着我只能在java代码中使用我的类吗?

在WPF中,可以在XAML代码中使用自定义类。我正在寻找类似的东西......

1 个答案:

答案 0 :(得分:2)

在FXML代码中使用“自定义”类是完全可能的。所需要的只是该类在运行时位于类路径上,并且可以由FXML解析器解析。后者意味着您需要完全限定的类名,或者您需要在FXML前言中为您的类导入。

请注意,FXML与默认包不兼容,因此默认包中的类可能无法加载。无论如何,非常不推荐使用默认包。

通常情况下你会有:

package com.example ;

public class ResizableCanvas {

    // ...
}

可以与

一起使用
<?import com.example.ResizableCanvas ?>
<!-- other imports ... -->

<-- ... -->
<ResizableCanvas fx:id="..." />