1

我正在尝试为 MatLab 中的 GUI 创建一个简单的网格,其中我想要一个静态文本,然后是一个可编辑框作为输入,如下所示:

+-----------------------+---------------+
|   Name 1   (1)        |  Input 1   (2)|
|                       |               |
+-----------------------+---------------+
|   Name 2   (1)        |  Input 2   (2)|
|                       |               |
+-----------------------+---------------+

我正在使用GUI 布局工具箱中的Grid 类和以下代码:

    % Parameters Section:
    staticPropPanel = uiextras.BoxPanel('Parent', paramPanel, 'Title', 'Signal Properties:');
    sPropGrid = uiextras.Grid('Parent', staticPropPanel, 'Spacing', 5);

    uicontrol('Style', 'text', 'Parent', sPropGrid, 'String', 'Number of Samples');
    nSamples = uicontrol('Style', 'edit', 'Parent', sPropGrid);
    uicontrol('Style', 'text', 'Parent', sPropGrid, 'String', 'Sampling Frequency (Fs) in Hz');
    Fs = uicontrol('Style', 'edit', 'Parent', sPropGrid);
    uicontrol('Style', 'text', 'Parent', sPropGrid, 'String', 'Carrier Frequency (Fc) in Hz');
    Fc = uicontrol('Style', 'edit', 'Parent', sPropGrid);

    set(sPropGrid, 'ColumnSizes', [-3 -1], 'RowSizes', [25 25 25]);

但是,在网格“调整大小”之后,网格没有以正确的顺序正确添加元素。例如,在set(sPropGrid, 'ColumnSizes', [-3 -1], 'RowSizes', [25 25 25]);执行之前,我得到以下信息:

调整大小前的网格

但是调整大小完成后,我得到以下信息:

调整大小后的网格

如何更改调整大小的顺序,以便将正确的元素放置在正确的位置?

4

1 回答 1

1

如果您查看 GUI 布局工具箱附带的文档,您将看到以下示例:

f = figure();
g = uiextras.Grid( 'Parent', f, 'Spacing', 5 );
uicontrol( 'Parent', g, 'Background', 'r' )
uicontrol( 'Parent', g, 'Background', 'b' )
uicontrol( 'Parent', g, 'Background', 'g' )
uiextras.Empty( 'Parent', g )
uicontrol( 'Parent', g, 'Background', 'c' )
uicontrol( 'Parent', g, 'Background', 'y' )
set( g, 'ColumnSizes', [-1 100 -2], 'RowSizes', [-1 100] );

产生下图:

来自文档的网格

您会看到对象首先按行添加,然后按列添加(红色 (1,1)、蓝色 (2,1)、绿色 (1,2)、空 (2,2) 等)。所以在你的情况,你需要先添加所有的uictonrols.text,然后是uicontrols.edit.

于 2013-05-23T17:18:42.017 回答