【问题标题】:Adding components to a netbeans auto-generated java gui class将组件添加到 netbeans 自动生成的 java gui 类
【发布时间】:2013-11-24 09:20:33
【问题描述】:

我正在开发一个小型 MVC 应用程序,模型提供代表表单组件的数据。在这种情况下,控制器使用 JButton 填充视图,其文本来自模型(字符串列表)。

不幸的是,我已经习惯了 Netbeans 的 Gui Builder,因此控制器填充的表单是自动生成的。不幸的是,检查自动生成的表单代码告诉我,在运行时修改它很麻烦。

在这一点上,我还没有找到很多解决这个问题的方法。当然,我可以完全用代码构建表单,但我不想这样做。如果这是唯一真正的可能性,我可能会弄清楚如何连接到自动生成表单的布局管理器(尽管一个很好的例子来说明如何去做会很好)。

所以,我想我的问题是,有没有一种合理的方法可以将这两种方法结合起来?也许是一个自定义的通用容器,可以添加到 GUI 中并通过代码轻松访问?

【问题讨论】:

  • 控制器填充视图”是否意味着按钮的数量、位置、大小等发生了变化,或者仅仅是从型号?
  • 我的意思是视图(JFrame)最初是空的。控制器直接根据模型中找到的数据添加 JButton。我以这种方式实现它并不重要,但解决一般问题肯定会在将来对我有用。

标签: java user-interface netbeans


【解决方案1】:

NetBeans 不需要对 Swing 控件的属性进行硬编码值。您始终可以改用自定义代码,在运行时设置属性值。

例如,这里有一个名为“copyButton”的 JButton,其文本当前被硬编码为 Copy

但是,通过单击指示的省略号,可以使用返回字符串的任何代码设置名称。

【讨论】:

  • 我确实偶然发现了它并将其标记在我的记忆中,但据我所知,它仅针对现有组件。有什么方法可以使用该功能在运行时触发组件生成?
  • 我唯一能想到的就是提前创建隐藏组件,并使用setVisible属性让它看起来好像是在运行时创建的。除此之外,我想看看 NetBeans 源代码,看看他们是如何做到的。
【解决方案2】:

发现最好的办法是将框架布局切换为特定类型(如 GridBag),并在添加新组件时将布局代码包含在控制器中。不是最好的解决方案(我希望在 Gui Builder 中尽可能多地进行管理),但它似乎工作得很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-28
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    相关资源
    最近更新 更多