有没有办法uitable
使用鼠标右键单击删除一行,类似于在excel中完成的方式?我希望这样做是为了只保存我想要的数据而不是所有表格。
问问题
1406 次
1 回答
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
例如:
选择一行并按下按钮将其删除。您还可以选择多行并一次删除它们!
这不是您想要的,但您的要求似乎很难实现。您将需要处理 java 对象,这不是最简单的方法。
我不想说这是不可能的,但如果你只使用pushbutton
. Matlab 不是为此而生的 :)
在此示例中,按钮没有图标,要添加一个,请阅读本文
于 2014-05-25T11:42:20.653 回答