删除uitable中的选定行

时间:2014-05-24 22:42:39

标签: matlab matlab-uitable

有没有办法使用鼠标右键单击删除uitable中的行,类似于在Excel中执行的方式?我希望这样做只是为了保存我想要的数据而不是所有的表格。

1 个答案:

答案 0 :(得分:1)

您可以引入pushbutton

function myTable 

close all
h = figure('Position',[600 400 402 100],'numbertitle','off','MenuBar','none');

defaultData = rand(5,2);
uitable(h,'Units','normalized','Position',[0 0 1 1],...
              'Data', defaultData,... 
              'Tag','myTable',...
              'ColumnName', [],'RowName',[],...
              'CellSelectionCallback',@cellSelect);

tb = uitoolbar(h);
uipushtool(tb,'ClickedCallback',@deleteRow);
end

function cellSelect(src,evt)
index = evt.Indices;
if any(index)
    rows = index(:,1);
    set(src,'UserData',rows);
end
end

function deleteRow(~,~)
th = findobj('Tag','myTable');
data = get(th,'Data');
rows = get(th,'UserData');
mask = (1:size(data,1))';
mask(rows) = [];
data = data(mask,:);
set(th,'Data',data);
end

例如:

enter image description here

选择一行并按下按钮将其删除。 您也可以选择多行并一次删除它们!

这不完全是你想要的,但你的要求似乎很难实现。您将需要处理java对象,这不是最简单的方法。

我不想说这是不可能的,但如果你选择pushbutton,你将节省大量时间。 Matlab不是为此而制造的:)

在此示例中,按钮没有图标,要添加一个图标,请阅读this article