使用 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

Android ------ 知乎开源的图片选择器 Matisse

Android ------ 知乎开源的图片选择器 Matisse