3

我有一个 Java SWING 程序,基本上只有一个简单的窗口。该窗口包含一个菜单和一个 JPanel。理想情况下,我想使用菜单选择一个外部 jar 文件(这是另一个 SWING 程序)并运行它。然后 jar 应该在后台执行并在我的窗口中使用 JPanel,而不是自己创建一个新窗口。这可能吗?我的猜测是,我应该以某种方式将我的 JPanel“公开”或“提供”给外部应用程序,但我不知道如何做到这一点。即使是一个简单的代码片段也会非常感激。非常感谢

4

1 回答 1

1

您将需要Jar在自定义类加载器中加载外部,以使其可供您的应用程序运行。像这样的东西URLClassLoader应该能够做到这一点。

您的应用程序和外部 Jar 应该使用他们可以通过其进行通信的通用、已知接口。这允许您加载外部 jar,查找并加载所需的“入口”类并运行它。

interface应该为通知/回调机制(AKA 监听器)提供某种注册,您的应用程序可以将其附加到外部“任务”,然后外部类可以使用它来向您的应用程序提供更改通知。

您应该尽可能避免将更多的应用程序暴露给外部 Jar,然后您必须这样做。这降低了外部 Jar 弄乱您的应用程序的风险,或者实际上,甚至需要关心它......

您可以根据需要使用观察者模式生产者/消费者模式

更多关于观察者模式

于 2013-08-28T01:34:16.717 回答