【问题标题】:Table data is not editable at this location, why won't this checkbox let me check it?表格数据在此位置不可编辑,为什么此复选框不让我检查它?
【发布时间】:2015-05-18 15:53:57
【问题描述】:
f = figure;
 columnname = {'X' , 'Y'};
 Selection = {'A','B','C','D','E'}
[vals{1:numel(Selection),1}]=deal(false)
    columnform = {'logical','logical'};
t = uitable('Data',vals,'ColumnName', columnname, 'ColumnFormat', columnform,'ColumnEdit',[true true true], 'RowName', Selection);

如果你运行这个脚本,它应该会吐出一个数字。但我只能选择表格 X 列中的复选框。这是为什么呢?

【问题讨论】:

    标签: matlab matlab-uitable


    【解决方案1】:

    这是因为变量vals 没有包含足够的数据来填充表格。

    简单地复制它以形成一个 2 列数组并且它可以工作。即添加这一行:

    vals = [vals vals]
    

    在创建表之前。

    完整代码:

    f = figure;
    close all
    clc
    clear
    
    columnname = {'X' , 'Y'};
    Selection = {'A','B','C','D','E'}
    [vals{1:numel(Selection),1}]=deal(false);
    
    vals = [vals vals]
    
    columnform = {'logical','logical'};
    
    t = uitable('Data',vals,'ColumnName', columnname, 'ColumnFormat', columnform, 'RowName', Selection,'ColumnEdit',true(1,2*size(Selection,1)));
    

    输出:

    编辑:

    要获取选定单元格的索引,您无需专门添加新变量。

    通过设置CellSelectionCallback,您可以直接获取索引。

    假设您在创建表后添加此行:

    set(t,'CellSelectionCallback',@SelCB)
    

    那么该函数可以用来获取索引如下:

    function SelCB(~, event)
    
        SelectedCells = event.Indices        
     end
    

    每次选择/取消选择单元格时都会输出一个 1x2 元素向量。

    【讨论】:

    • 感谢您的帮助,如何调整列的大小以使其适合数据并且右侧和底部没有那么大的空白?还有一种方法可以一次只检查每列 1 个框,还是我必须为此切换到单选按钮?
    • 我可以更改单个变量(如 x 和 y)的列宽,但该空格不会留下或自动调整大小。我想我会继续寻找。
    • 看起来您可以使用 4 元素向量 [x y width height] 使用 set(t,'Position',[]) 调整表格位置
    猜你喜欢
    • 2014-06-06
    • 2014-09-05
    • 2021-03-16
    • 1970-01-01
    • 2022-12-18
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    相关资源
    最近更新 更多