有没有办法使用鼠标右键单击删除uitable
中的行,类似于在Excel中执行的方式?我希望这样做只是为了保存我想要的数据而不是所有的表格。
答案 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
例如:
选择一行并按下按钮将其删除。 您也可以选择多行并一次删除它们!
这不完全是你想要的,但你的要求似乎很难实现。您将需要处理java对象,这不是最简单的方法。
我不想说这是不可能的,但如果你选择pushbutton
,你将节省大量时间。 Matlab不是为此而制造的:)
在此示例中,按钮没有图标,要添加一个图标,请阅读this article