Удалить выбранные строки в пригодном для использования

Есть ли способ удалить строку в 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 просто не для этого:)

В этом примере кнопка не имеет значка, чтобы добавить его, прочитайте эту статью

Другие вопросы по тегам