MATLAB: IN GUI related with appending strings

guiMATLAB

I have a figure. I have some strings in Popup menu or list box. say red,green,blue. Actually I need that string selected to be displayed at the top of the figure. That is okay. The problem is when I select the next string (say green), It have to be appended with red. Displaying red,green. Next when I select the blue, It should display as red,green,blue. Please rectify the problem.
clc;
clf;
clear all;
close all;
figure;
imshow('attachment.jpg');
str = {'building','grass','mountain','sky','trees','roads','stadium'};
hL = uicontrol('style','popup','string',str,'position', [20 20 200 30],...
'callback',@(src,evt)title(sprintf('The objects are: %s',str{get(src,'value')})));

Best Answer

  • At first omit the nervous "clc; clf; clear all; close all;". It is a waste of time even and especially when posting example code in the forum. Is there any reason to kill all my work, when I try to run your code?
    I use a separate function for a better readability:
    figure;
    ImageH = imshow('attachment.jpg');
    AxesH = ancestor(ImageH, 'axes');
    str = {'red', 'green', 'blue'};
    hL = uicontrol('style','popup','string',str,'position', [20 20 200 30],...
    'callback', {@myCallback, AxesH});
    function myCallback(src, evt, AxesH)
    TitleH = get(AxesH, 'Title');
    oldTitle = get(TitleH, 'String');
    StrList = get(src, 'String');
    selected = StrList{get(src, 'Value')};
    if isempty(oldTitle)
    set(TitleH, 'String', sprintf('The objects are: %s', selected));
    else
    set(TitleH, 'String', [oldTitle, ', ', selected]);
    end