1

如何在 javafx 中使用 @namedArg 将非字符串对象作为参数传递?我在网上找不到关于这个问题的一个简单的例子!

我目前正在尝试从包装在 VirtualizedScrollPane 中的 RichTextFX 实例化 InlineCssTextArea - 请查看以下源代码:

public VirtualizedScrollPane(@NamedArg("content") V content) {
  [...]
}

其中自定义类型 V 正在扩展节点。就我而言,我想将 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 的以下回答:javaFX 8 中@NamedArg 注释的目的是什么?

4

1 回答 1

1

您基本上需要为名为content. 在 FXML 中为参数传递值的两种方法是作为属性:content="..."或使用属性元素。仅当您可以传递 FXML 加载程序知道如何将其转换为适当值的字符串(即,如果该值是字符串或原始类型)时,使用属性才有效,这里不是这种情况。使用属性元素,您只需嵌套一个名称为属性名称的元素并将值嵌套在其中:

<VirtualizedScrollPane>
    <content>
        <InlineCssTextArea />
    </content>
</VirtualizedScrollPane>
于 2017-04-29T12:18:29.887 回答