java - 在javafx 8中使用namedArg注释将对象作为参数传递

标签 java javafx fxml richtextfx

如何在 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/

相关文章:

java - 如何向 vBox 添加标签?

java - 流已被操作或关闭,尝试创建赛车手时获得异常

gradle - 如何在Gradle JavaFX项目中复制资源

java - 缺少 JavaFX 应用程序类示例.Main

java - 当 TextField 中输入的文本与图像名称匹配时,如何在 ImageView 中显示图像?

Javafx更改组件的对齐方式

java - 打印 ArrayList 的成员

java - 在序列化我的对象时,如何强制 Jackson 将数字写成字符串

java - "Cannot instantiate the type...."

java - 禁止 javascript 在 javafx webview 中运行