从另一个项目将JPanel添加到JFrame

时间:2018-11-03 12:41:57

标签: java swing jframe

我想编写一个程序,可以在其中添加“插件”之类的内容。假设我在Project1的地方有JFrame,在Project2的地方有JPanel

重点是,用户可以开发自己的程序(插件),而不是将其添加到主程序(Project1)中。

所以...我将框架导出为可运行的JAR文件,并将导出面板导出为可运行的JAR文件(或仅作为JAR文件?)。

我要做的是在框架中显示面板。

我只是想做类似thisthis的事情,但是仅在Java和面板中,我不需要运行任何.exe程序。 (它将在Linux而非Windows上运行。)

我的专业照片应该描述我想做什么:) image

有什么办法吗?

1 个答案:

答案 0 :(得分:0)

对于插件部分,您可以查看我创建的this project,loadPlugin方法从jar文件加载插件。

对于JPanel部分,您只需要让插件采用某种方式(肯定是API)即可,使他们可以更改JFrame的显示面板(使用JFrame::setContentPane)。 希望对您有所帮助,如果需要的话,请询问我。

编辑:

作为示例,您可以从.jar获取JPanel并实例化它:

URLClassLoader classLoader = new URLClassLoader(new URL[]{file.toURI().toURL()}, Thread.currentThread().getContextClassLoader());
String packageName = "package.where.is.the.jpanel.to.load";
JPanel jpanel = (JPanel) Class.forName(packageName, true, classLoader).getConstructor().newInstance();