【问题标题】:How do I add components at run time to a Swing UI created with Netbeans visual editor?如何在运行时将组件添加到使用 Netbeans 可视化编辑器创建的 Swing UI?
【发布时间】:2009-07-11 11:11:56
【问题描述】:

我目前正在编写一个应用程序,用户在某个时候可以单击在运行时生成的按钮。从头开始编写我所有的 Swing 代码时,我知道该怎么做,但我想利用 Netbeans 的可视化编辑器。

生成的 UI 代码进入我无法修改的 initComponents() 方法,因为它是从可视表单中自动重新生成的。

我想在设计时使用可视化编辑器放置一个面板,我可以在运行时在其中添加按钮,以便它们很好地适应布局,但我不知道如何访问面板以方便的方式。此外,除了使用面板之外,可能还有其他方法。

所以基本上:

  • 如何在运行时定位 Swing 组件?
  • 有没有更好的方法将运行时创建的组件集成到生成的 Swing UI 中?

感谢您的帮助。

【问题讨论】:

    标签: java swing netbeans runtime


    【解决方案1】:

    NetBeans 生成的 GUI 类将所有组件存储在私有变量中。您可以在生成的类中添加一个返回面板的方法,即使您进行其他设计,它也会保留。

    如果您要使用生成的 UI,那么最好在该 UI 中使用 JPanel 来为您自己的组件“开辟”空间。否则,您将不得不担心您的组件如何影响 UI 放置的组件的布局。

    【讨论】:

    • 真丢脸,我在生成的源代码(“变量声明 - 请勿修改”部分)中看起来不够好,用于成员声明(仅查看类顶部的旧习惯)宣言)。谢谢你的回答。
    【解决方案2】:

    仅仅因为您使用的是 NetBeans 生成的 GUI 类并不意味着您必须对面板使用 Group 布局。我发现将其切换到 BorderLayout 很有帮助,尤其是在我想添加一些动态用户界面代码的情况下。

    【讨论】:

    • 我在正确访问面板后遇到了这个问题:由于面板的默认 GroupLayout 配置方式,按钮未显示。我切换到 BoxLayout,一切都按预期工作。我只是对必须通过容器上的右键菜单而不是在属性检查器中更改容器的布局这一事实感到困惑。希望这也有帮助。
    【解决方案3】:

    可以通过右键单击 GUI-Designer 中的组件,选择属性并点击源选项卡或右键单击组件并选择“修改源”(或类似那)并设置适当的访问修饰符。 或者只是通过 getXYZComponent() 方法导出它们。

    定位组件太难了,因为你是和设计师一起构建的,因此知道每个组件。 例如,如果您有一个 JTabbedPane 并希望在用户点击按钮或类似的东西时向其添加选项卡,您只需发出 myJTabbedPane.add(myCustomComponent);瞧,一个新标签出现了。

    还可以使用上面提到的“修改源”对话框来修改自动生成的代码和/或用于自动生成的代码,这非常有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多