Для этого ответа предполагается, что вы используете matlab-hg2.
Из документов для uicontrol
:
'listbox'
... В Value
свойство хранит строки индексы выбранных элементов списка, и это значение вектора при выборе нескольких элементов. После любого события с кнопкой мыши, которое изменяет свойство Value
, MATLAB оценивает процедуру обратного вызова окна списка. Чтобы отложить действие, когда можно выбрать несколько элементов, вы можете связать кнопку «Готово» со списком. Используйте обратную связь для этой кнопки, чтобы оценить поле списка Value
.
Из вышесказанного мы узнаем, что информация о выбранных строк возвращается в Value
. Оттуда, это вопрос отслеживания того, что выбрано. Это может быть довольно легко сделать, используя persistent
переменную внутри ListBox»Callback
, как показано в следующем примере:
function LISTBOX_EXAMPLE
hFig = figure('Units','Pixels','Position', [200 200 100 200],'Menubar','none');
uicontrol(hFig, ...
'Style', 'listbox',...
'Units','Pixels',...
'Position', [20 20 80 150],...
'Max',3,...
'Min',0,...
'String',num2cell(1:10),...
'Callback',@selectionCallback);
function selectionCallback(hObject,~)
persistent previouslyChosenItems
%// Elements were added:
if numel(previouslyChosenItems) < numel(hObject.Value)
previouslyChosenItems = union(previouslyChosenItems,hObject.Value,'stable');
%// Elements were removed:
elseif numel(previouslyChosenItems) > numel(hObject.Value)
previouslyChosenItems = intersect(previouslyChosenItems,hObject.Value,'stable');
%// A different element was selected (single element):
elseif numel(previouslyChosenItems) == numel(hObject.Value) && numel(hObject.Value)==1
previouslyChosenItems = hObject.Value;
end
disp(['Currently selected items (in order): ' num2str(previouslyChosenItems(:)')]);
end
end
Пример вывода:
Currently selected items (in order): 7
Currently selected items (in order): 3
Currently selected items (in order): 3 9
Currently selected items (in order): 3 9 1
Тогда это до вас, чтобы присвоить значение previouslyChosenItems
Полезно.
, пожалуйста, напишите минимальный пример и снимок экрана о вашей проблеме. Никто не восстановит ваш gui, чтобы воспроизвести вашу проблему. – thewaywewalk