Code covered by the BSD License  

Highlights from
41 Complete GUI Examples

  • GUI_1() Demonstrate how to delete an entry from a uicontrol string.
  • GUI_10() Demonstrate how to make an image visible or invisible by pushbutton.
  • GUI_11()
  • GUI_12() Demonstrate how to control the mouse pointer from a GUI.
  • GUI_13() Demonstrate how to display & change a slider's position with an edit box.
  • GUI_14() Demonstrate colored text in a listbox, & how extract user's choice.
  • GUI_15() Demonstrate an edit text which has copyable but unchangeable text.
  • GUI_16() Demonstrate display & change a slider's position & limits with edit boxes
  • GUI_17() Demonstrate how to have a running clock in a GUI, and timer use.
  • GUI_18() Demonstrate the use of the buttondownfcn for an axes.
  • GUI_19() Demonstrate how to keep track of the number of times an action is taken
  • GUI_2() Demonstrate how to add a new entry to a uicontrol string.
  • GUI_20() Demonstrate how to get the chosen string from a popup.
  • GUI_21() Demonstrate how to get selection from a popup to an edit box & vis versa.
  • GUI_22() Demonstrate how to get selection from a popup to an edit box & vis versa.
  • GUI_23() Demonstrate finding which figure was current before callback execution.
  • GUI_24() Demonstrate how to get data from one GUI to another (data passing).
  • GUI_25() Demonstrate how to make an image loader.
  • GUI_26() Demonstrate how to make the choices in several popups mutually exclusive.
  • GUI_27() Demonstrate how to display the current location of the mouse in an axes.
  • GUI_28() Demonstrate uicontextmenu for an axes click.
  • GUI_29() Demonstrate the use of a uicontrol to manipulate an axes from a GUI,
  • GUI_3() Demonstrate how to hide a uicontrol from the user.
  • GUI_30() Same as GUI_29, except uses callback strings.
  • GUI_31() Demonstrate multiple uicontrol manipulations based on user choices.
  • GUI_32(str) Demonstrate how to get data from a GUI into the base workspace without
  • GUI_33() Demonstrate how to export data with context menu.
  • GUI_34() Demonstrate how to make a simple printscreen GUI. Note that this does
  • GUI_35() Demonstrate how to use toggle buttons to mimic tabbed panels.
  • GUI_36() Demonstrate how to make a custom dialog box which returns information.
  • GUI_37(str,time_out) Demonstrate how to make a password editbox, and nested function
  • GUI_38() Demonstrate bringing the focus to the figure after callback using JAVA.
  • GUI_39() Demonstrate use of nested functions for callbacks and other functions.
  • GUI_4() Demonstrate how to make a multiline editbox.
  • GUI_40() Demonstrate how to use an image as a background of a GUI.
  • GUI_41() Demonstrate how to save and load the state of a GUI system.
  • GUI_5() Demonstrate how to use a pushbutton to delete bits of string and how to
  • GUI_6() Demonstrate how to update one uicontrol with data from others.
  • GUI_7() Demonstrate how to store choice counters for multiple user choices.
  • GUI_8() Demonstrate how to tell which button in a uibuttongroup is selected.
  • GUI_9() Demonstrate one way to let the user know a process is running.
  • previewGUIs() This is a helper GUI which lets the user quickly view all of the example
  • contents.mSyntax Considerations for reading the M-Code:
  • View all files

41 Complete GUI Examples

by

 

27 Jul 2009 (Updated )

41 working GUIs to read and learn.

Editor's Notes:

This file was selected as MATLAB Central Pick of the Week

GUI_39()
function [] = GUI_39()
% Demonstrate use of nested functions for callbacks and other functions.
% Notice here that there is no need to extract S from varargin in each
% function because all callback functions are nested in the main function
% and therefore have access to the structure S.  
% User can draw whatever is desired, and change colors by right-clicking in
% the axes window.  When the drawing is complete, click the Save-As menu to
% save the file in one of three image formats.
%
%
% Suggested exercise:  Add ability to interactively delete data points.
%
%
% Author:  Matt Fig
% Date:  7/30/2009

S.COL = [0 0 1];  % Start with blue.
S.LST = {[],[0 0 1],[1 0 0],[0 .9 0],[.9 .9 0],[0 0 0]}; % List of colors.
S.FMT = {[],'jpg','png','bmp'};  % List of file formats.
S.fh = figure('units','pixels',...
              'position',[300 300 400 400],...
              'menubar','none',...
              'name','GUI_39',...
              'numbertitle','off',...
              'resize','off');
S.ax = axes('units','pixels',...
            'position',[20 20 360 350],...
            'Xlim',[0 1],...
            'YLim',[0 1],...
            'drawmode','fast');
S.cm = uicontextmenu;
% Define the different color menus.  We could define as many as we like.
% Each color has it's corresponding RGB values in S.LST.  Note that the
% first cell in S.LST should be kept empty.  (See um_call)
S.um(1) = uimenu(S.cm,'label','Color');  % First menu seen on right-click
S.um(2) = uimenu(S.um(1),'label','Blue'); % The rest are seen as submenus.
S.um(3) = uimenu(S.um(1),'label','Red');
S.um(4) = uimenu(S.um(1),'label','Green'); 
S.um(5) = uimenu(S.um(1),'label','Yellow');
S.um(6) = uimenu(S.um(1),'label','Black');
set(S.um(2:6),'callback',@um_call)  % The callback for 5 uimenus.
% This next one will select from a wider palette.
S.um(7) = uimenu(S.um(1),'label','Other','callback',{@um7_call});
% Now we create a menu for the figure itself.
S.fm = uimenu(S.fh,'label','Save As');
S.fm(2) = uimenu(S.fm(1),'label','jpg');
S.fm(3) = uimenu(S.fm(1),'label','png');
S.fm(4) = uimenu(S.fm(1),'label','bmp');
set(S.fm(2:4),'callback',{@fm_call})  % To save the drawing.   
axis([0,1,0,1]) % This locks the axes limits to avoid auto-rescaling.
set(S.ax,'xticklabel',[],'yticklabel',[],'xtick',[],'ytick',[])  % Neaten.
% Set the uicontextmenu to point to the axes.
set(S.ax, 'buttondownfcn',@ax_bdfcn,'uicontextmenu',S.cm) 
hold on, box on  % So that we don't overwrite with each new point drawn.
set(S.fh,'windowbuttonupfcn', @fh_wbufcn);

    function [] = ax_bdfcn(varargin)
    % ButtonDownFcn for the axes.
        % We only want to do something if left clicking.
        if strcmp(get(S.fh,'selectiontype'),'normal')
            % We want to plot dots as long as user holds down mouse button.
            set(S.fh, 'windowbuttonmotionfcn', @fh_wbmfcn)
        end

    end

    function [] = fh_wbmfcn(varargin)
    % The windowbuttonmotionfcn for figure, while button is held only.
        pt = get(S.ax, 'currentpoint');
        plot(pt(1),pt(3),'.','buttondownfcn',@ax_bdfcn,'color',S.COL);
    end

    function [] = fh_wbufcn(varargin)
    % WindowButtonUpFcn for the figure.
        % We want to stop drawing dots when user lets mouse button up.
        set(S.fh, 'windowbuttonmotionfcn', '');
    end

    function [] = um_call(varargin)
    % Callback for the uicontextmenu 2:6.
        S.COL = S.LST{varargin{1}==S.um};  % Set the current color.
    end

    function [] = um7_call(varargin)
    % Callback for the uicontextmenu number 7.
        c = uisetcolor();  % Call the MATLAB color-getter.
        S.COL = c;  % Set the current color.
    end

    function [] = fm_call(varargin)
    % Callback for the figure menu.
        N = inputdlg('Enter a file name.','FileName'); % Get a name.
        F = getframe(S.fh,get(S.ax,'position')+[1 1 -2 -2]);  % Only want to get axes.
        FMT = S.FMT{varargin{1}==S.fm};  % User's format choice.
        imwrite(F.cdata,[N{1},'.',FMT],FMT)  % Write the image.
    end
end



Contact us