gpt4 book ai didi

java - 如何在 Swing 应用程序中使用 Guice

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:33:20 25 4
gpt4 key购买 nike

我有一个 Swing 应用程序,我想将它从意大利面条转换为使用 Guice 的依赖注入(inject)。使用 Guice 提供配置和任务队列等服务进展顺利,但我现在开始使用应用程序的 GUI,但不确定如何继续。

该应用程序基本上是一个 JFrame,在 JTabbedPane 中有一堆选项卡。每个选项卡都是一个单独的 JPanel 子类,它布置了各种组件并需要服务来在按下某些按钮时执行操作。

在当前的应用程序中,这看起来有点像这样:

@Inject
public MainFrame(SomeService service, Executor ex, Configuration config) {
tabsPane = new JTabbedPane();

// Create the panels for each tab and add them to the tabbedpane
somePanel = new SomeTabPanel(service, ex, config);
tabsPane.addTab("Panel 1", somePanel);

someOtherPanel = new SomeOtherTabPanel(service, ex, config);
tabsPane.addTab("Panel 2", someOtherPanel);

... do more stuff
}

显然,这并不完全遵循 DI 最佳实践。我不想必须 @Inject 选项卡,因为那样会让我得到一个带有许多参数的构造函数。我确实想使用 Guice 将所需的依赖项注入(inject)到我需要的任何选项卡对象中,而不必将所有这些依赖项传递给选项卡构造函数。

选项卡对象的所有依赖项都是我的 Module 知道的服务,所以基本上我认为我想做的就是向 Guice 询问所需的对象并为我 build 它们。

最佳答案

你能用Multibinding吗?将所有选项卡绑定(bind)为 Set?如果他们实现了一些允许您获取用于选项卡的名称的接口(interface),那么您可以循环添加选项卡集中的选项卡。不过,您可能需要弄清楚如何对选项卡进行排序。

关于java - 如何在 Swing 应用程序中使用 Guice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2632033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com