JavaFX 自定义控制器工厂

2024-01-12

我一直在尝试FXMLLoader并使用setControllerFactory使用自定义方法Callback<P,R>执行。

ORACLE 文档 http://docs.oracle.com/javafx/2/fxml_get_started/whats_new.htm#CHDDDDCC说如下:

实现可能会返回 null 值来表明它确实如此 没有或不能创建给定类型的控制器;在这种情况下, 默认控制器构造机制将被采用 装载机。

我想要实现的结果是我可以使用依赖注入框架来创建任何需要参数的控制器,但我会让FXMLLoader加载任何不需要参数的控制器。

因此,如果我有以下简单的 FXML 文件,该文件使用ViewController不接受参数的类...

<StackPane fx:id="pane"
          xmlns:fx="http://javafx.com/fxml"
          fx:controller="my.package.ViewController">
</StackPane>

我使用以下简单的控制器工厂实现来向FXMLLoader在这种情况下我希望它能够管理控制器的构造......

loader.setControllerFactory(new Callback<Class<?>, Object>(){
    @Override
    public Object Call(Class<?> type) {
        return null; // Let the FXMLLoader handle construction...
    }
});

拨打电话后load()方法我的Initialise方法在ViewController类永远不会被调用(我已经用断点验证了这一点)。

如果我更改控制器工厂实现以返回一个实例ViewController类然后一切都按预期进行。

谁能帮助我消除我的困惑?我使用的是Callback接口不正确或者ORACLE文档不正确?


javafx 在 FXMLLoader 中执行以下操作:

    try {
      if (controllerFactory == null) {
        setController(ReflectUtil.newInstance(type));
      } else {
        setController(controllerFactory.call(type));
      }
    } catch (InstantiationException exception) {
      throw new LoadException(exception);
    } catch (IllegalAccessException exception) {
      throw new LoadException(exception);
    }

所以,是的,oracle教程是不正确的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaFX 自定义控制器工厂 的相关文章

  • 如何创建弹出菜单

    我是 javafx 的新手 我想在单击鼠标右键时显示 弹出菜单 我找到一个教程Here http pixelduke wordpress com 2011 12 11 popupmenu in javafx and Here http la
  • 获取 BorderPane 中中心空间的宽度和高度 (JavaFX 2)

    我有一个简单的BorderPane实例是我的根节点Scene 边框窗格的右侧有一个面板 带有一些 GUI 控件 包括一个按钮 当我单击此按钮时 我创建了一个类的实例 Foo 延伸StackPane我把这个实例作为边框窗格的中心节点 我想获取
  • 商业产品中的 JavaFX [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想使用 JavaFX 作为大型商业产品的开发框架 我可以在不违反 Oracle 许可的情况下关闭未来产品的源代码并使用 Oracle JavaFX
  • 在JavaFX中后台执行任务

    我想在 TilePane 中加载最多九个面板 对于每个窗格 我必须首先运行内容计算 大约 300 毫秒 然后必须构建面板 大约 500 毫秒 我想要的是 有九个 ProgressIndicators 在计算后与每个面板进行交换 我尝试过Pl
  • JavaFX:创建垂直菜单功能区

    我在这里试图完成的一个示例是 当您打开 Office Word 2013 文件并单击文件时 它会在左侧显示一个列表 Info New Open 有没有JavaFX成分像那样 我正在寻找一种 某物 列表 其项目垂直对齐 您可以单击执行某些操作
  • Java FX 中的嵌套控制器问题

    我试图包括控制器 SelectedIssueController 在我的主要布局 main fxml 但我收到以下错误 Can not set lt mypackage controllers SelectedIssueController
  • 如何让VBox填充其父级的大小

    这是使 VBox 填充其父级的正确方法吗 final Group root new Group final Scene scene new Scene root 1000 800 Color BLACK final VBox c new V
  • 从 Javafx2.2 迁移到 Javafx8

    我正在尝试将 Javafx 2 2 应用程序迁移到 Javafx 8 我在使用嵌套时遇到以下问题FXML javafx fxml LoadException Root hasn t been set Use method setRoot b
  • 在 64 位机器中创建 32 位 JavaFx Native Bundle

    我的机器和 IDE 的配置如下 产品版本 NetBeans IDE 7 2 内部版本 201207171143 爪哇 1 7 0 07 Java HotSpot TM 64 位服务器虚拟机 23 3 b01 系统 Windows 7 版本6
  • 如何使用 javafx 隐藏或停用 TextField 和 Label

    我想隐藏或停用TextField和它的Label在我的 JavaFX 应用程序中 这就是我尝试过的 myTextField setVisible false 但它不起作用 我在 Windows 7 上使用 Eclipse V4 5 0 和
  • JavaFX 虚拟键盘不显示

    我是javafx新手 我制作了一个简单的应用程序表单 它有 锚定窗格 Pane 文本域 我在触摸屏设备上运行该应用程序 但虚拟键盘不显示 文本字段已经聚焦 我使用的是 JDK 8u25 场景生成器 2 0 根据我读到的 http docs
  • 如何获取javafx imageView中显示图像的宽度/高度?

    我需要获取 imegView 中显示图像的宽度 高度 并将其与 imageView getImage getWidth getHeight 中的原始图像大小进行比较 并在用户从应用程序 GUI 中调整其大小时监听更改 I get this
  • FXML load() 期间出现 JavaFX IllegalAccessException

    我有一个由以下代码调用的对话框窗口 DialogController是使用模式对话框窗口的辅助类 它主要将控制器引用与其窗口捆绑在一起 void handleServicesEdit ActionEvent event throws IOE
  • javafx中的stackpane和root有什么区别?

    我正在练习javafx做饼图 以下是开发饼图的代码 如果我这样做Group并与StackPane 我发现输出没有区别 我已经评论了组部分 只是徘徊两者之间的区别 import javafx application Application i
  • 如何在javafx中获取当前屏幕详细信息?

    我的电脑连接了多个显示器 从 javaFX 我可以获得主屏幕 但我需要了解当前舞台所在屏幕的屏幕详细信息 我怎样才能得到它 尝试使用获取矩形屏幕 http docs oracle com javafx 2 api javafx stage
  • 我们可以像 swing JSplitPane 一样在 Javafx SplitPane 上添加 OneTouchExpansable 按钮吗

    我可以在 JavaFX 上使用 css java api 库添加 OneTouchExpandable 按钮吗SplitPane Swing 中已经存在此选项JSplitPane 但我在 JavaFX API 上找不到该选项 我想 我们可以
  • 使用 CSS 在 javaFX 中设置按钮样式

    我在使用 CSS 的 javaFX 中设置按钮样式时遇到问题 我使用 Intellij Idea IDE 我有 CSS css 文件 Button fx padding 8 15 15 15 fx background insets 0 0
  • JavaFX HTMLEditor - 插入图像功能

    我正在使用 JavaFX 集成的 HTMLEditor 它具有的所有功能都很好 但我还需要具有在 HTML 文本中插入图像的功能 你知道我可以使用的一些来源吗 或者其他一些可以在 JavaFX 中使用的 HTML WYSIWYG 编辑器并且
  • 如何监听场景图节点中的WindowEvent.WINDOW_SHOWN?

    似乎 WindowEvent WINDOW SHOWN 永远不会在场景图中的任何节点上分派 也没有 我能找到的 知道节点何时可见 渲染 显示 例如 测试启动器 java package com example javafx event im
  • FXML 文件中的 getHostServices().showDocument()

    有没有简单的方法可以将 getHostServices showDocument 命令放入 toHomepage 方法中 而不是执行一行又一行的代码 这样代码应该看起来干净简单 package sample import javafx ap

随机推荐

  • 获取给定 DN 的 NT 样式域\用户

    我有 Active Directory 中用户的 DN 我想从中获取 NT 样式 域 用户 sAMAccountname AD 属性为我提供了用户部分 但是域呢 Thanks 您可以通过获取用户 DN 的最后部分 DC domain DC
  • 如何设置每 10 次触发 LLDB 断点?

    要调试高频计时器或传感器的值 配置一个仅每 x 次触发的断点会很有用 实现这一目标的最佳方法是什么 我在 Xcode 中尝试了 停止前忽略 x 次 选项 但这仅适用于第一次 我可以使用 LLDB 命令重置此计数器吗 您可以随时使用以下命令重
  • 子窗体定位如 StatusBar

    我有一个带有菜单栏和状态栏的 MDIForm 当我创建一个子窗体并将其定位为 Align alBottom 时 该窗体会离开屏幕区域 并且主窗体滚动条被激活 如何将子窗体定位在状态栏上方 对于没有父级负责显示它的控件 对齐和锚点并不能真正按
  • Swift - 在面部识别运行后,使用 Apple 登录始终会导致“注册未完成”

    我首先按照本教程使用 Firebase 设置 使用 Apple 登录 https medium com swift products sign in with apple with firebase authentication xcode
  • 针对动态变量的 If 语句[重复]

    这个问题在这里已经有答案了 我正在尝试做类似以下的事情 New Variable Name state name Value True if state name eq True Write Host Pass else Write Hos
  • css和xhtml中的每个元素和属性、属性是否有必要使用小写?

    4 2 元素和属性名称必须小写 XHTML 文档的所有 HTML 元素和属性名称必须使用小写 这种差异是必要的 因为 XML 区分大小写 例如 和 是不同的标签 来源 http www w3 org TR 2002 REC xhtml1 2
  • 多个 selectInput 值会产生意外的 dplyr (postgres) 行为

    我有一个可爱的闪亮应用程序 它接受 selectInput 值 查询 postgres 数据库 并输出一个图表 这是一个简单的界面 但由于 dplyr 数据库连接 很难在这里重现 今天我将第一个 selectInput 值更改为 multi
  • Laravel 表单请求数组验证自定义规则

    我想创建一个表单请求验证 但不知道如何操作 我有一个表格
  • 如何使用excel vba获取href属性

    我想检索的 href 属性 h3 html页面的标签 我能够获取innerText 但我不知道如何访问href属性 有几个 h3 文档中的标签 但目前我只需要第一个 剩下的我稍后再处理 这是我到目前为止得到的代码 Sub Scrap Dim
  • 尝试在java中执行命令时出错[重复]

    这个问题在这里已经有答案了 我正在尝试使用终端但从 java 运行 java 文件 意思是 我将使用 java 运行该命令 我正在尝试执行命令 cd Users apple Documents Documents workspace Use
  • Kivy外规则继承2

    作为后续问题 Kivy 外部规则固有 https stackoverflow com questions 31618565 kivy outside rule inherence Kivy 规则继承与 add widget https st
  • 我们如何配置闪亮的开源服务器来支持并发用户

    我有一个 R Shiny 应用程序 我想使用开源解决方案托管该应用程序以支持大约 50 个并发用户 我遇到了 RStudio 的闪亮服务器 它可以用来将闪亮的应用程序部署到网络上 我想使用shinyserver的开源版本 文档说我们可以使用
  • 权限拒绝:编写 com.sec.android.provider.badge.BadgeProvider

    我最近在使用 Android Nougat 的三星手机上运行我的应用程序时发生崩溃 我没有授予 com sec android provider badge BadgeProvider 的运行时权限 这导致了崩溃 我不知道如何授予此徽章提供
  • Printf - 读取位置访问冲突 - C++

    0xC0000005 读取位置 0xcccccccc 时发生访问冲突 printf 抛出此异常 我不知道为什么会发生这种情况 这些字符串变量中有值 我使用 printf 错误吗 帮助 请参阅开关盒 string header string
  • 使用 Tortoise-Hg 克隆在中间中止[命令返回代码 255]

    我在用乌龟汞 http tortoisehg bitbucket io download for 克隆一个叉子 from CodePlex http nearforums codeplex com SourceControl changes
  • 将 Kaggle csv 从下载网址导入到 pandas DataFrame

    我一直在尝试不同的方法来导入 SpaceX 任务csv file https www kaggle com spacex spacex missions downloads database csv on Kaggle https www
  • 无法加载文件或程序集 Microsoft.IdentityModel.Tokens 问题

    我正在尝试使用 JWT 令牌验证用户 我下面使用的代码在控制台应用程序中运行得非常好 但是当我想将它应用到我的 Azure 函数中时 它给出了错误 Could not load file or assembly Microsoft Iden
  • 系统属性管理

    有没有 足够 的方法来更改詹金斯的系统属性 改变它们最简单 最快的方法是什么 例如 我需要关闭无用的 在我的例子中 ping 线程 如果您确实想要一种快速而简单的方法来更改系统属性 您可以使用脚本控制台 https wiki jenkins
  • 参数/模式中“&variable”的含义

    什么是 variable当它用于模式或闭包参数时意味着什么 for code in self exit code iter let mut new seps do seps iter fold result next 这里我们有 code
  • JavaFX 自定义控制器工厂

    我一直在尝试FXMLLoader并使用setControllerFactory使用自定义方法Callback