【问题标题】:Add JPanel to JFrame from another project将 JPanel 从另一个项目添加到 JFrame
【发布时间】:2023-03-31 23:54:02
【问题描述】:

我想制作一个可以添加“插件”之类的程序的程序。假设我有Project1,我有JFrameProject2,我有JPanel

关键是,用户可以开发自己的程序(插件),然后将其添加到主程序中(Project1)。

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

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

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

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

有没有办法做到这一点?

【问题讨论】:

    标签: java swing jframe


    【解决方案1】:

    插件部分可以看我创建的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();
    

    【讨论】:

    • 感谢您的回答。我不完全知道如何制作那个 JPanel。我找不到任何 JFrame::setContentView 方法。但也许 JFrame::getContentPanel 是一样的?假设我将插件添加到我的服务器,我需要在我的 JFrame 中显示 JPanel?你能告诉我一些代码如何做到这一点吗?
    • 糟糕,对不起,这是setContentPane
    • 但是我知道 JFrame 的实例,因为那是我的主程序。我运行 JFrame,然后 JFrame 运行 JPanel 所在的 .jar 文件(来自另一个文件夹)。所以我需要获取 JPanel 的实例并执行类似 JPanel jPanel = instance.但是我不需要从 JPanel 调用某些方法或其他东西,只需将其放在某个区域(例如在我链接的那个视频中),因此用户无法移动它或其他什么...当用户单击按钮时,JPanel 将显示向上或隐藏。
    • 我用一个示例编辑了我的答案,该示例向您展示了如何从插件实例化自定义 JPanel
    猜你喜欢
    • 1970-01-01
    • 2021-01-29
    • 2012-05-02
    • 2011-09-13
    • 2013-12-12
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多