我的代碼真的太長了,無法在這裏發佈,即使是小部分。因此,我將只要求一兩件事情: 修改uitable「HT」的「數據」屬性時,在我看來是:Uitable,cellSelectionCallback和修改數據集
set(ht, 'Data', something);
的「cellSelectionCallback」程序被觸發(作爲選擇實際上很可能已經改變),但是在數據集被修改之後並不立即。
- 這是真的嗎?
- 有什麼辦法可以防止這種行爲?
謝謝!
我的代碼真的太長了,無法在這裏發佈,即使是小部分。因此,我將只要求一兩件事情: 修改uitable「HT」的「數據」屬性時,在我看來是:Uitable,cellSelectionCallback和修改數據集
set(ht, 'Data', something);
的「cellSelectionCallback」程序被觸發(作爲選擇實際上很可能已經改變),但是在數據集被修改之後並不立即。
謝謝!
我使用uitable有代碼,例如:
tbl = uitable('Parent', fh, 'CellSelectionCallback',{@cell_select_callback fh});
我做了一個快速的實驗和使用set(tbl,'Data',my_data)
當觸發回調僅如果set
使所選擇的單元格改變,並這種情況會立即發生(據我所知 - 我沒有看到明顯的延遲)。
要停止這種情況,您可以取消設置CellSelectionCallback
媒體資源,更改數據,然後重置CellSelectionCallback
。
我有同樣的問題。獲得index out of bounds
警告。爲了擺脫那些我在CallSelectionCallback
用這個的:
if ~isempty(eventdata.Indices)
// all the code
end
當set命令觸發CallSelectionCallback
的eventdata.Indices
是空的。
類似的可能性塞巴斯蒂安的答案是把這個在您的cellselectioncallback功能:
function output = mycellselection(source,event)
if isempty(event.Indixes)
output = [];
return
end
% rest of your code for cell selection
end
如果沒有任何輸出需要做的,你可以將其刪除。我只是把它放在那裏提醒你,你必須爲任何輸出分配一個值。
感謝您的回答。沒有想到,我會嘗試。 – embrouille
隨時接受答案! – Justin
好吧,所以它沒有解決我的問題(重置cellSelectionCallback時,callbacki仍然在我的程序中調用,至少)。我設法避免使用附加到可用的JTable的setValueAt(val,row,col)方法的問題。這樣'Data'屬性不會被修改,並且回調函數不會被觸發。 無論如何感謝您的幫助。 – embrouille