使用 Matisse GUI builder 设置最大宽度
Posted
技术标签:
【中文标题】使用 Matisse GUI builder 设置最大宽度【英文标题】:Setting maximum width using Matisse GUI builder 【发布时间】:2010-12-27 17:09:40 【问题描述】:我想创建一个 GUI,其中一些文本字段可以水平调整大小,但也指定了最大宽度。例如,首选宽度是 100 像素,如果调整窗口大小,它可以更大,但允许的最大宽度是 200 像素。 GroupLayout 支持这一点,我们可以在 addComponent 方法中指定最大大小(以及最小和首选)。
我正在使用 Netbeans 和 Swing GUI Builder (Matisse)。我可以将文本字段设置为可调整大小,我可以设置首选大小,但我发现没有地方可以设置最大大小(和最小值)。这是属性表的布局部分:
alt text http://img690.imageshack.us/img690/3523/netbeanstfproplayout.png
由于无法设置最大大小,Netbeans 使用Short.MAX_VALUE
代替,因此如果文本字段可调整大小,则它没有上限。我也试过设置组件的maximumSize
属性,但是没有效果,会被忽略。
如果我手动编辑.form
文件,我可以将max="32767"
部分更改为max="200"
,Netbeans 会生成正确的代码。有没有办法在不手动编辑.form
文件的情况下进行设置?
【问题讨论】:
我之前从 GUI 设置了最大大小(5.5、6.0、6.1),但我的工作机器上没有 Netbeans 来验证它是否仍然存在。您可以尝试将属性列表从组更改为按字母顺序排列。 您可能指的是我在问题中提到的 maximumSize 属性。那是另一回事。 您解决过这个问题吗?如果是这样,解决方案是什么?这是哪个版本的 NetBeans? 没有。它仍然无法正常工作。 :( 在 Netbeans 8.1 中仍然无法使用 【参考方案1】:我正在查看JTextField 组件上关于组件大小的可用选项。这些设置是对LayoutManager 的建议(提示)。最终,LayoutManager 决定了组件的大小。对于 Matisse 和 .form 对象,布局完全由 .form 参数控制。没有从标准 API 操作 .form 对象的自动化方法。
有一个名为FormGenerator 的工具旨在尝试从现有的 Swing 对象生成 .form 对象。您也许可以使用它来动态操作您的 .form 文件。
【讨论】:
【参考方案2】:我通过在自动生成initComponents()
方法后添加initComponentsFix()
解决了这个问题。然后,您可以像这样以编程方式设置最大尺寸:
private void initComponentsFix()
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTabbedPaneTravelForms, javax.swing.GroupLayout.DEFAULT_SIZE, 800, 900) //changed max size
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTabbedPaneTravelForms, javax.swing.GroupLayout.DEFAULT_SIZE, 1228, Short.MAX_VALUE)
);
基本上,您会覆盖在 initComponents()
方法中构建的布局,并将最大尺寸设置为想要的宽度,而不是 Short.MAX_VALUE
。这对我有用。窗口在最大尺寸和属性中设置的最小尺寸时停止调整大小。
即使这个问题很老,我希望它仍然可以帮助某人。我在以下答案 Netbeans 6.7.1 mainPanel resizing problem 的帮助下解决了这个问题。
【讨论】:
以上是关于使用 Matisse GUI builder 设置最大宽度的主要内容,如果未能解决你的问题,请参考以下文章
使用 netbeans GUI builder 进行 JTable 绑定
如何在 NetBeans GUI Builder 中包含自定义面板?
JavaFX之Scene Builder的使用(开发一款GUI小工具原来这么简单)
Android ------ 知乎开源的图片选择器 Matisse