我试图在我的项目中使用依赖注入,这样我就可以在场景之间传输数据。例如,在一个控制器中,我得到了名为proj_id
的Integer
字段。这是我在舞台上根据某种逻辑得出的。当我改变阶段时,我想通过新的阶段控制器来访问这个变量。新控制器具有相同的字段Integer
proj_id
。
我用@Autowired
标记了这些字段,但我不明白当控制器发生变化时Bean
如何存储值。我用构造函数、getter和setter创建了实体Curr_proj
,我假设它是存储变量的组件,但仍然不起作用。
好吧,我真的很感谢你的回答,但我的JavaFX知识并没有你想象的那么糟糕。我同意,我必须更加努力,我现在确实在学习Spring。
我做了一个小研究,在场景之间传输变量在我的情况下很容易,因为我使用FXVeawer
,所以我的控制器已经是一个Spring
Components
。
因此,在我的FirstController
中,我只需要在我的proj_ij
字段中添加一个getter
:
public Integer proj_id;
public void SomeMethod() {
proj_id = 5;
}
Integer getProj_id() {
return proj_id;
}
完成后,我刚刚在我的秒控制器
公共FitstController FirstController
和简单的构造函数注入
中创建了一个字段:
@Autowired
public void get_projid(FirstController FirstController) {
this.FirstController = FirstController;
}
现在,我可以通过键入FirstController来访问我的
在我的proj_id
值。getProj_id第二个控制器中
这不是一个具体的答案,只是一个没有重点的一般答案,可能有助于提供一个总体方向。也许我最终会把信息转移到其他地方。如果这个答案对你没有用处,请忽略它。
我的建议是:学习Spring。
Baeldung,spring.io和其他网站有巨大的资源,专门用于教Spring。利用它们。
遵循使用spring boot应用程序的现代实践。忽略任何不使用最新spring版本或不依赖xml配置的旧教程。
另外:学习JavaFX
Oracle、eden编码、makery和openjfx。io有很好的学习JavaFX的教程。
独立完成这两件事。然后独立开发您自己在这两种技术中的重要应用程序。
在您尝试集成JavaFX和Spring之前,请先这样做。JavaFX和Spring的交叉点拥有的高质量资源要少得多,这意味着您需要进行更多的研究、更努力地工作和开发,以完成集成。
只有在您对这两种技术都有了很好的工作知识(而不仅仅是基本的理解)之后,才能尝试开发使用这两种技术的另一个应用程序。
与其他Spring技术不同,目前,你不能仅仅使用Spring Initializer生成的应用程序来学习一些股票教程,并期望有一个集成Spring和JavaFX的有用的工作应用程序。
在我看来,集成并不太难,对于许多应用程序来说都是值得的,但我不建议在没有这两种技术(Spring和JavaFX)的全面经验的情况下构建集成应用程序,因为它们是如此不同,即使它们是互补的。
为了更具体地解决您的问题:遵循javafx mvc中的体系结构,但是在模型层使用spring服务和bean,并将它们注入控制器中。
如果您通过rest与服务器通信,请使用Spring rest客户端和数据搬迁对象。
如果您有本地数据库,请使用Spring数据。
实体类或数据传输对象可以构成mvc中模型的一部分,也可以为mvvm体系结构创建具有JavaFX属性的单独视图模型类。
有关与jpa基本集成的本地db应用程序,请参阅:
整体架构类似于这个eden SQLite JavaFX应用程序,即使那不是Spring。它演示了所涉及的组件。在Spring技术中替代,例如Spring数据、注入、Spring Boot应用程序等,以替代各种组件和布线。
总之,控制器中数据之间的交互通信被抽象为MVC或MVVM体系结构,该体系结构通过依赖注入使用spring服务和bean。不过,整个应用程序不仅仅是MVC,还具有其他组件和技术,例如:
>
要管理的spring boot:
JavaFX应用程序类管理的JavaFX应用程序生命周期
fxml控制器中的UI视图
和任何一个
>
或
spring rest可以访问远程系统上的web服务。
自动连接控制器时,请使用控制器bean的原型范围。有关更多信息,请参阅:
目前JavaFX 17是模块化的,但Spring boot 2不是。这使得集成更加困难。
对于许多开发人员来说,JavaFX和Spring的集成目前将超出他们作为开发人员的舒适区。
未来的可能性
在未来,spring boot 3将是模块化的。
希望还可以在Spring Initializer中添加一个初学者依赖项,以便于生成新的JavaFX Spring项目。
然后将其与Maven和gradle中良好的模块化和插件构建支持相结合,以便通过jlink和jpack打包模块化应用程序。
还可以添加良好的IDE新项目向导支持,以使用这两个框架生成新项目。
还为使用新技术的Spring和JavaFX集成提供了良好的教程。
上述所有内容的结合有望使技术的集成和部署更容易获得。
我正在使用Netbeans 7.2和Scene Builder1.0开发一个JavaFX应用程序。我有我的主屏幕设置,我想有它,所以我点击一个按钮,它将关闭主窗口和打开另一个。主Stage对象位于main类中,但controller类是独立的,不能访问它,因为它不是静态的,并且位于不同的类中。我如何改变场景或舞台?
问题内容: 我想以某种方式将在阶段A中读取的变量传递给阶段B。在某些示例中,我看到人们将其写入文件中,但是我认为这并不是一个很好的解决方案。我尝试将其写入环境变量,但是在此方面我并没有真正成功。如何正确设置? 为了使它正常工作,我尝试了很多事情,并读到我应该使用“””而不是“’‘来启动外壳程序并将这些变量转义为例如。 以下是我拥有的管道: 如您所见,我从阶段 Package中 读取的内容也需要在阶
我尝试了几乎所有可用的解决方案,但似乎都不起作用我需要在两个Javafx场景之间传递,但当我单击以导航到下一个场景时,什么也没有发生。以下是我目前为止的代码:
问题内容: 如何在声明式管道的各个阶段之间传递变量? 在脚本化管道中,我收集的过程是写入一个临时文件,然后将该文件读入一个变量。 如何在声明管道中执行此操作? 例如,我想基于shell动作创建的变量来触发其他作业的构建。 问题答案: 如果要使用文件(由于脚本是生成所需值的东西),则可以如下所示使用。如果没有,请使用如下所示的选项:
问题内容: 我正在写一个简单的游戏并试图播放声音,但是当我创建它抛出的Media对象时我无法使它工作。我不是Java编码员,可以提供任何帮助。这是一个示例代码: 显然“ put.mp3”存在并位于正确的目录中,我使用以下方法检查了路径: 我在这里做错了什么? 问题答案: 问题是因为您试图在之外运行JavaFX场景图控件。 运行JavaFX应用程序线程内的所有JavaFX场景图节点。 您可以通过扩展
大家好。我在生产中使用gitlab ci。我有很多舞台。1) 构建工件2)部署到外部服务器3)使用jfrog cli部署到工件 我在缓存maven本地存储库方面有问题。我的跑步者在第一步(构建)下载所有依赖项,并在最后一步(部署到Artifictory)执行相同操作。此外,我的跑步者在最后阶段之前删除m2文件夹中的所有数据: my gitlav ci yaml(无需第二步):