首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Matisse构建器设置最大宽度

使用Matisse构建器设置最大宽度
EN

Stack Overflow用户
提问于 2009-12-17 23:42:42
回答 2查看 1.2K关注 0票数 4

我想创建一个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文件的情况下对其进行设置?

EN

回答 2

Stack Overflow用户

发布于 2012-12-14 23:16:27

我正在查看JTextField组件上可用的与组件大小相关的选项。这些设置是对LayoutManager的建议(提示)。最终,LayoutManager决定组件的大小。在使用Matisse和.form对象的情况下,布局完全由.form参数控制。没有从标准应用程序接口操作.form对象的自动化方法。

有一个名为FormGenerator的工具,它被设计用来尝试从现有的Swing对象生成.form对象。您可以使用它动态地操作您的.form文件。

票数 0
EN

Stack Overflow用户

发布于 2013-10-01 17:08:41

我通过在自动生成的initComponents()方法之后添加initComponentsFix()解决了这个问题。然后,可以通过编程方式设置最大大小,如下所示:

代码语言:javascript
复制
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解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1922622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档