我有一个Java SWING程序,基本上只有一个简单的窗口。该窗口包含一个JPanel菜单。理想情况下,我想使用菜单选择外部jar文件(这是另一个SWING程序)并运行它。然后jar应该在后台执行并在我的窗口中使用JPanel,而不是自己创建一个新窗口。 这可能吗?我的猜测是我应该以某种方式“暴露”或“提供”我的JPanel到外部应用程序,但我无法弄清楚我是如何做到这一点的。即使是一个简单的代码片段也会非常感激。非常感谢
答案 0 :(得分:1)
您需要在自定义类加载器中加载外部Jar
,以使其可供您的应用程序运行。像URLClassLoader
这样的东西应该能够做到这一点。
您的应用程序和外部Jar应使用可以通过的通用,已知的接口。这允许您加载外部jar,查找并加载所需的“entry”类并运行它。
此interface
应该为通知/回调机制(AKA是一个侦听器)提供某种注册,应用程序可以将其附加到外部“任务”,然后外部类可以使用它来提供更改通知回到你的申请表。
在可能的情况下,您应该避免将更多的应用程序暴露给外部Jar,然后您必须这样做。这样可以降低外部Jar与您的应用程序混乱的风险,或者甚至需要关心它......
您可以使用Observer Pattern和Producer/Consumer Pattern,具体取决于您的需求
的更多信息