Matlab Uitable、cellSelectionCallback和修改数据集

Matlab Uitable、cellSelectionCallback和修改数据集,matlab,matlab-uitable,Matlab,Matlab Uitable,我的代码实在太长了,不能在这里发布,哪怕是一小部分。所以我只想问一两件事: 在我看来,修改uitable“ht”的“Data”属性时: set(ht, 'Data', something); cellSelectionCallback例程被触发,因为选择很可能确实发生了更改,但不是在数据集被修改后立即触发的 这是真的吗? 有没有办法防止这种行为? 谢谢 我有使用uitable的代码,例如: tbl = uitable('Parent', fh, 'CellSelectionCallback',

我的代码实在太长了,不能在这里发布,哪怕是一小部分。所以我只想问一两件事: 在我看来,修改uitable“ht”的“Data”属性时:

set(ht, 'Data', something);
cellSelectionCallback例程被触发,因为选择很可能确实发生了更改,但不是在数据集被修改后立即触发的

这是真的吗? 有没有办法防止这种行为?
谢谢

我有使用uitable的代码,例如:

tbl = uitable('Parent', fh, 'CellSelectionCallback',{@cell_select_callback fh});
我做了一个快速的实验,当使用settbl,'Data',my_Data时,只有当集合导致所选单元格发生变化时,才会触发回调,据我所知,这会立即发生-我没有看到明显的延迟


要停止这种情况,您只需取消设置CellSelectionCallback属性,更改数据,然后重置CellSelectionCallback。

我有使用uitable的代码,例如:

tbl = uitable('Parent', fh, 'CellSelectionCallback',{@cell_select_callback fh});
我做了一个快速的实验,当使用settbl,'Data',my_Data时,只有当集合导致所选单元格发生变化时,才会触发回调,据我所知,这会立即发生-我没有看到明显的延迟


要阻止这种情况发生,您可以取消设置CellSelectionCallback属性,更改数据,然后重置CellSelectionCallback。

我也遇到了同样的问题。正在获取索引越界警告。要清除我在CallSelectionCallback中使用的那些内容,请执行以下操作:


当set命令触发CallSelectionCallback时,eventdata.index为空。

我也遇到了同样的问题。正在获取索引越界警告。要清除我在CallSelectionCallback中使用的那些内容,请执行以下操作:


当set命令触发CallSelectionCallback时,eventdata.Index为空。

与Sebastien的回答类似的一种可能性是将其放入cellselectioncallback函数中:

function output = mycellselection(source,event)

if isempty(event.Indixes)
    output = [];
    return
end
% rest of your code for cell selection

end

如果您没有任何需要的输出,您可以删除它。我把它放在那里是为了提醒你,你必须给任何输出赋值。

与塞巴斯蒂安的答案类似的一种可能性是把它放在你的cellselectioncallback函数中:

function output = mycellselection(source,event)

if isempty(event.Indixes)
    output = [];
    return
end
% rest of your code for cell selection

end

如果您没有任何需要的输出,您可以删除它。我把它放在那里只是为了提醒您,您必须为任何输出指定一个值。

谢谢您的回答。没想到,我会试试。好的,所以重置cellSelectionCallback时,它没有解决我的问题。至少在我的程序中,callbacki仍然被调用。我使用附加到uitable的JTTable的setValueAtval、row、col方法设法避免了这个问题。这样就不会修改“Data”属性,也不会触发回调函数。无论如何,谢谢你的帮助。谢谢你的回答。没想到,我会试试。好的,所以重置cellSelectionCallback时,它没有解决我的问题。至少在我的程序中,callbacki仍然被调用。我使用附加到uitable的JTTable的setValueAtval、row、col方法设法避免了这个问题。这样就不会修改“Data”属性,也不会触发回调函数。无论如何,谢谢你的帮助。