Удалить выбранные строки в пригодном для использования
Есть ли способ удалить строку в uitable
используя правую кнопку мыши, как в Excel? Я хочу сделать это для того, чтобы сохранить только те данные, которые я хочу, а не всю таблицу.
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 просто не для этого:)
В этом примере кнопка не имеет значка, чтобы добавить его, прочитайте эту статью