2014-05-24 66 views
0

有沒有辦法使用鼠標右鍵單擊在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 

例如:

enter image description here

選擇一行,並按下按鈕將其刪除。 您也可以選擇多行並一次刪除它們!

這不完全是你想要的,但你的要求似乎很難實現。您將需要處理java對象,這不是最簡單的方法。

我不想說這是不可能的,但如果你只是去pushbutton,那麼你將節省很多時間。 Matlab的是不爲:)

在這個例子中,按鈕沒有圖標製作,添加一個,讀this article

+0

非常感謝。我會在稍後檢查 – user1212200