【发布时间】:2016-04-05 14:36:11
【问题描述】:
我正在关注this 创建自定义组件并导入它。但是,当它在单击 jar 文件后进入 Import Dialog 时,它不会出现。当我注释掉教程用于构造函数的代码时,它再次出现。但是,我用来制作自定义组件的子组件都没有出现。为什么以及如何解决?
另外,我正在使用 VBox 而不是 AnchorPane(如教程中所见)来做我自己的事情。
教程中的构造函数代码:
public CommodityImageLabel() {
FXMLLoader fxmlLoader = new FXMLLoader(
getClass().getResource("/fxml/CommodityImageLabel.fxml"));
fxmlLoader.setRoot(this);
fxmlLoader.setController(this);
try {
fxmlLoader.load();
} catch (IOException exception) {
throw new RuntimeException(exception);
}
}
我自己的示例构造函数的代码:
public While() {
FXMLLoader fxmlLoader = new FXMLLoader(
getClass().getResource("BlocksFXML/While.fxml"));
fxmlLoader.setRoot(this);
fxmlLoader.setController(this);
try {
fxmlLoader.load();
} catch (IOException exception) {
throw new RuntimeException(exception);
}
}
Edit1:我尝试注释掉部分代码,当我注释掉try-catch部分时,它使组件出现在对话框中,但它仍然不显示子组件。
编辑 2:自定义组件基本上是一个 VBox,其中包含一个带有标签和文本字段的 Hbox。 Here 是它应该的样子与它在没有 try-catch 部分的情况下成功导入时最终的样子。
【问题讨论】:
-
你能edit你的问题包括一个没有出现的代码示例吗?
-
@James_D 我不确定你的意思,因为 FXML 是完整的,但是当我将它导入到 SceneBuilder 时,组件并没有像预期的那样显示。我附上了图片,如果它们有帮助的话。
-
也许我理解错了。你是说教程里的版本不行吗?我以为只有你自己的例子不起作用。您使用的是哪个 Scene Builder 版本?
-
对不起,我自己的例子是不工作的。我最近在这台笔记本电脑上安装了 Scene Builder,所以我猜它是最新的。
-
相同的产品,但 Gluon 在版本 2 之后从 Oracle 接管了开发。
标签: java javafx custom-controls fxml