如何在 javafx 中使用 @namedArg 将非字符串对象作为参数传递?我在网上找不到关于这个问题的简单例子!
我目前正在尝试从封装在 VirtualizedScrollPane 中的 RichTextFX 实例化 InlineCssTextArea - 请查看此源代码:
public VirtualizedScrollPane(@NamedArg("content") V content) {
[...]
}
其中自定义类型 V 扩展了 Node.js。就我而言,我想将 InlineCssTextArea 作为 V 传递。以编程方式执行此操作非常简单:
InlineCssTextArea area = new InlineCssTextArea();
Scene scene = new Scene(new StackPane(new VirtualizedScrollPane<>(area)), 600, 400);
但是将其转换为 FXML 非常具有挑战性。我已经尝试过一些东西,比如基于官方 oracle fxml 教程的 fx:factory:
<VirtualizedScrollPane fx:factory="content">
<InlineCssTextArea />
</VirtualizedScrollPane>
或者@namedArg如何建议,作为参数:
<VirtualizedScrollPane content="InlineCssTextArea" />
-或-
<VirtualizedScrollPane content="<InlineCssTextArea />" />
这个问题有fxml解决方案吗?
我的问题基于 James D 的以下回答:What is the purpose of @NamedArg annotation in javaFX 8?
最佳答案
您基本上需要为名为 content
的参数传递一个值。在 FXML 中传递参数值的两种方法是作为属性:content="..."
或使用属性元素。仅当您可以传递 FXML 加载程序知道如何转换为适当值的字符串(即,如果该值是字符串或原始类型)时,使用属性才有效,但此处的情况并非如此。使用属性元素,您只需嵌套一个名称为属性名称的元素并将值嵌套在其中:
<VirtualizedScrollPane>
<content>
<InlineCssTextArea />
</content>
</VirtualizedScrollPane>
关于java - 在javafx 8中使用namedArg注释将对象作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43695579/