【问题标题】:How to use WindowBuilder to edit a JPanel in an inner class如何使用 WindowBuilder 在内部类中编辑 JPanel
【发布时间】:2023-03-18 03:40:01
【问题描述】:

我想在 Eclipse 中使用 WindowBuilder 来构建 Swing GUI。我需要构建的 JPanel 将是非 GUI 包装器中的内部类,如下所示:

public class MyWrapper extends MyBaseClass {
  ...
  class MyPanel extends JPanel {
    ...
  }
}

所以我的问题是:我可以使用 WindowBuilder 构建 MyPanel 吗?如果是这样,我应该如何设置?

如果有人感兴趣,包装器是一个抽象基类,我为我的应用程序开发的插件必须扩展它;部署问题意味着将 GUI 放在单独的 JAR 中也不实际,所以我几乎必须这样做。

我当前的工作流程很糟糕,它是在 NetBeans 中构建 GUI 并将整个生成的类粘贴到 Eclipse 中,在其中我将它连接到我的包装器中的方法。我非常希望 WindowBuilder 能让我更可靠、更高效地工作,如果我能欺骗它在 MyPanel 中生成代码,而不是在 MyWrapper 中生成代码。

谢谢

【问题讨论】:

    标签: java eclipse eclipse-plugin windowbuilder


    【解决方案1】:

    尚不清楚为什么 JPanel 必须是内部类。一般来说,这不是一个好主意(无论哪种方式,您最终都会得到多个 .class 文件)。 JPanel 应该只是它自己的*类,并从您的包装类中引用(所有这些都可以在同一个 jar 中)。 WindowBuilder 可以很容易地用于创建/编辑您的 JPanel 子类(包括最初使用 NetBeans 创建的子类),但它只对*类这样做。它不允许您创建/编辑这样的内部类(这完全是故意的)。

    【讨论】:

    • 感谢您抽出宝贵时间回答,但正如我在问题中所说,我无法将面板放在*课程中。我知道它应该怎么做,但我不这样做的理由是合理且不可改变的。无论如何,感谢您确认 WB 在设计上无法做到这一点;很高兴知道。