【问题标题】:Change size of uitable in matlab在matlab中更改合适的大小
【发布时间】:2017-04-05 06:01:52
【问题描述】:

我在 matlab GUI 中使用 uitable。在这个 GUI 中,每次处理后 uitable 的行和列,因此我不能使用 uitable 的 Position 属性。当我绘制表格时,某些区域保持空白,并且它的位置也始终位于 GUI 图的左下角。图片如下:

我想从表格中删除白色区域,即表格根据行和列自动调整大小。

我该怎么做?

【问题讨论】:

    标签: matlab matlab-guide matlab-uitable


    【解决方案1】:

    A possible way-around to handle this issue: 合适的行高和列宽与表格的尺寸无关,因为表格可以包含任意数量的行/列。这就是表格有滚动条的原因。因此,调整表格大小只会影响所谓的滚动条视口,不会 影响任何内部方面,例如行高或列宽。您可以捕获调整大小回调并根据新表大小以编程方式修改行高和列宽。但是,我建议不要这样做,因为大多数用户已经习惯了当前的行为,不仅在 Matlab 中,而且在大多数基于 GUI 的应用程序中。

    另一种可能的解决方法是,如果您使用“FontUnits”、“Normalized”对单位进行标准化,它可能会对您有所帮助。由于字体大小会改变,你的行宽和列宽也会改变,但是当字体不需要扩大列宽时,列将停止调整大小。

    以下代码将达到目的。

    clear all;
    clc;
    
    %% Create a random dataset with any number of rows and columns
    data = rand(10, 15);
    
    %% Create a uitable
    t = uitable('Data',data);
    
    %% Set the position and size of UITable
    % Position(1) = Distance from the inner left edge of the figure
    % Position(2) = Distance from the inner bottom edge of the figure
    % Position(3) = Distance between the right and left edges of  rectangle containing the uitable
    % Position(4) = Distance between the top and bottom edges of  rectangle containing the uitable
    % Extent(1) = Always zero
    % Extent(2) = Always zero
    % Extent(3) = Width of uitable
    % Extent(4) = Height of uitable
    t.Position = [350 350 t.Extent(3) t.Extent(4)];
    
    %%End
    

    【讨论】:

    • 你好,@Waseem Anwar,使用 t = uitable('Data',rand(6,3)); t.Position(3:4) = t.Extent(3:4);我们可以更改大小,但图形总是出现在图形的左下角,当我们绘制两个不同行的表格时,第二个表格部分或完全覆盖第一个表格。使用上述命令绘图时如何更改表格的位置。上述命令中的 (3:4) 是什么意思?
    • 嗨@NaseebGill,太好了。现在您已经非常接近您的解决方案了。为了理解 t.Position(3:4) = t.Extent(3:4),我们需要查看 uitable 的两个属性。即位置和范围。位置是一个 4 元素向量 [(距图左边缘的距离) (距图底边的距离) (表格的宽度) (表格的高度)]。这意味着您可以通过使用前两个值来更改表格的位置。另一方面,Extent 是一个只读(您不能设置参数)4 元素向量,它为您提供表格的宽度(3)和高度(4)。
    • continued... 虽然 Extent 的前两个元素始终为零。所以语句 ( t.Position(3:4) = t.Extent(3:4);) 实际上获得了宽度和高度从 Extent 的第 3 和第 4 个元素中取出表格,并将这些值放在位置的第 3 和第 4 个元素中。为了设置位置,您可以使用 Position 的前两个元素。左下角对应于(0,0),而左上角对应于图形的最大尺寸。请注意,Position 和 Extent 是不同的属性。 Extent 对应于值的表,而 Position 对应于表 + 容器(白色)。
    • 不错。不知道文档中给出了
    • matlab中如何改变标签组的宽高?我在他们的网站上看到这些属性是只读的......有什么帮助吗?
    猜你喜欢
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 2015-03-31
    相关资源
    最近更新 更多