2013-08-28 58 views
2

我有一個基本上只有一個簡單窗口的Java SWING程序。該窗口包含一個菜單和一個JPanel。理想情況下,我想使用菜單來選擇外部jar文件(這是另一個SWING程序)並運行它。然後該jar應該在後臺執行,並在我的窗口中使用JPanel,而不是單獨創建一個新窗口。 這可能嗎?我的猜測是,我應該以某種方式「暴露」或「使」我的JPanel到外部應用程序,但我無法弄清楚我該如何做到這一點。即使是一個簡單的代碼片段,也會非常感激。非常感謝將JPanel公開給外部jar

+0

請看看這個[回覆](http://stackoverflow.com/a/11150286/1057230)。我希望它能幫助你在某個地方:-)下面的答案是幫助你達到預期的方向。儘管我的鏈接中的答案與情況無關,但它可以幫助您理解如何在給定項目中使用外部jar。 –

回答

1

您將需要在自定義類加載器中加載外部Jar,以使其可供您的應用程序運行。像URLClassLoader應該能夠做到這一點。

您的應用程序和外部Jar應該使用可以通過的通用接口。這允許你加載外部jar,找到並加載所需的「入口」類並運行它。

這個interface應該爲通知/回調機制(AKA一個監聽器)提供某種註冊,你可以將應用程序附加到外部「任務」上,然後外部類可以使用它來提供更改通知給你應用。

如果可能的話,你應該避免將更多的應用程序暴露給外部Jar,然後你必須。這減少了外部JAR與應用程序搞亂,或者實際上,甚至不需要關心它的風險...

您可以使用任一Observer PatternProducer/Consumer Pattern,根據您的需要

更多關於Observer Pattern