2013-11-23 101 views
0

我有一个小型的MVC应用程序,我正在处理模型提供表示组件的数据。在这种情况下,控制器使用JButton来填充视图,JButton的文本是从模型(字符串列表)中绘制的。添加组件到一个netbeans自动生成的java gui类

不幸的是,我已经接触到Netbeans的Gui Builder,所以控制器填充的表单是自动生成的。不幸的是,检查自动生成的表单代码告诉我,我在运行时修改它很麻烦。

在这一点上,我没有发现太多解决这个问题。当然,我可以完全用代码构建表单,但我不想。如果这是唯一真正的可能性,我可以弄清楚如何挂钩到自动生成的表单的布局管理器中(尽管一个很好的例子就是如何去做这件事很好)。

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

+0

“*控制器填充视图*”意味着按钮的数量,位置,大小等是否改变,还是仅仅是从模型中绘制的文本? – jaco0646

+0

我的意思是视图(JFrame)最初是空的。控制器根据模型中找到的数据直接添加JButton。我这样实施并不重要,但解决一般问题在将来肯定对我有用。 –

回答

0

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

0

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

例如,在这里我有一个名为'copyButton'的JButton,其文本当前被硬编码为复制copyButton Properties

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

+0

我确实偶然发现了这个问题,并将其标记在我的记忆中,但它只针对现有的组件,据我所知。任何方式使用该功能在运行时触发组件生成? –

+0

我能想到的唯一事情就是预先创建隐藏的组件,并使用'setVisible'属性使它看起来好像它们是在运行时创建的。除此之外,我想看一下NetBeans源代码,看看它们是如何实现的。 – jaco0646

相关问题