将自定义UI导入场景构建器的正确方法?

时间:2014-04-05 04:31:33

标签: import javafx-2 custom-controls scenebuilder

我正在尝试使用自定义控件构建UI。但是很难让场景构建器与自定义部件一起正常工作。

我的自定义控件:          

    <?import java.lang.*?>
    <?import javafx.scene.control.*?>
    <?import javafx.scene.image.*?>
    <?import javafx.scene.layout.*?>
    <?import javafx.scene.text.*?>

    <fx:root maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="100.0" prefWidth="800.0" type="javafx.scene.layout.AnchorPane" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
        <children>
    ...other code
        </children>
    </fx:root>

Room.fxml,使用自定义类:

...other code
<?import ag.ctrl.*?>
<?scenebuilder-classpath-element ../../target/classes/ag/ctrl?>
...other code
<BorderPane prefHeight="200.0" prefWidth="200.0"
            BorderPane.alignment="CENTER">
            <top>
                <TeamArea />
            </top>
</BorderPane>

自定义ui的控制器:

package ag.ctrl;
...
public class TeamArea extends AnchorPane {
...
public TeamArea() {
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource(
                "/ui/TeamArea.fxml"));
        fxmlLoader.setRoot(this);
        fxmlLoader.setController(this);

        try {
            fxmlLoader.load();
        } catch (IOException exception) {
            throw new RuntimeException(exception);
        }
    }
...
}

以及所有这些文件的路径: TeamArea.fxml:/resource/ui/TeamArea.fxml Room.fxml:/resource/ui/Room.fxml

TeamArea.class:/target/classes/ag/ctrl/TeamArea.class

我之前尝试了许多不同的方法。最后找到了场景构建器的类错误或其他错误。 目前,我在场景构建器中的TeamArea节点上遇到了未解决的类错误。

某些愚蠢的错误必须在某处......

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

我认为你链接到错误的类路径。

看看这个thread

希望能解决您的问题。

答案 1 :(得分:0)

您的类路径必须是:

<?scenebuilder-classpath-element ../../target/classes?>

然而,我面临着同样的问题而且也没有这样做。如果你有工作,请给我发表评论