如何使用MatLab的GUI Layout Toolbox设置网格的顺序?

时间:2013-05-23 16:45:11

标签: matlab user-interface

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

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

我正在使用Grid class中的GUI Layout Toolbox,代码如下:

    % 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]);之前,我得到以下内容:

Grid before resize

然而 后调整大小,我得到以下内容:

Grid after resize

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

1 个答案:

答案 0 :(得分:1)

如果查看GUI Layout Toolbox附带的文档,您将看到以下示例:

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] );

产生下图:

Grid from documentation

您将看到首先按行添加对象,然后按列添加(红色(1,1),蓝色(2,1),绿色(1,2),空(2,2)等)。 )因此,在您的情况下,您需要先添加所有uictonrols.text,然后再添加uicontrols.edit