0

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

4

1 回答 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 回答