File Exchange

image thumbnail


version (13.2 KB) by Dirk-Jan Kroon
Create Menu Bar (s) on any location in a figure window


Updated 12 Jan 2011

View License

Editor's Note: This file was selected as MATLAB Central Pick of the Week

This function MenuBar, allows the user to create menu's anywhere in a figure
it replaces UIcontextmenu of UIpanels by real menu bars.

menubar(figure_handle) or menubar

Mouse hover, and window-resize updates can be enabled by

menubar('start',figure_handle) or menubar('start')

Or alternatively by:



%Creat figure with uipanel
uipanel1 = uipanel('Units','Pixels','Position',[10 200 400 200]);

%Attach a contextmenu (right-mouse button menu)

%Add menu-items to the context menu
hchild=uimenu(menu_panel1, 'Label', 'Random Pixels');
uimenu(hchild, 'Label', 'Red','Callback','disp(''Red callback'')');
uimenu(hchild, 'Label', 'Blue','Callback','disp(''Blue callback'')');

%Make form the context menu a real menubar

%Add some other menu-buttons
hchild=uimenu(menu_panel1, 'Label', 'Clear','Callback','disp(''Clear'')');
hchild=uimenu(menu_panel1, 'Label', 'Help');
uimenu(hchild, 'Label', 'Info','Callback','disp(''Info callback'')');

%Update the menubar

%Enable the mouse over and resize effects

Cite As

Dirk-Jan Kroon (2020). MenuBar (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (4)

per isakson

MenuBar adds both to the appearance and usability of my guis. Furthermore, I learn from the code.

I replaced imshow by image (R2012a) and to suppress tickmarks and labels I added the following line directly after "... image( barimage, ..."

set( data.menuitems(i).Handle, 'Visible', 'off' )

The behavior of MenuBar is not affected by this change.


Dirk-Jan, I really like this tool, but I noticed you used "imshow" which is a function from Image Processing Toolbox. Can you change that to use the "image" command instead? In the meantime, please add Image Processing Toolbox as a requirement.

Y Mehta

I get the following error

??? Undefined function or method 'imshow' for input arguments of type 'uint8'.

Error in ==> menubar>CreatMenuBar at 196

Error in ==> menubar at 95

Error in ==> test>test_OpeningFcn at 67

Error in ==> gui_mainfcn at 221
feval(gui_State.gui_OpeningFcn, gui_hFigure, [], guidata(gui_hFigure), varargin{:});

Error in ==> test at 27
gui_mainfcn(gui_State, varargin{:});

Y Mehta


Now also works with regular callback functions.

Instead of using a timer for every uipanel it uses one timer for the whole figure.

Solved bug: "Matlab is slow after doing many menubar updates"

Menubar width is now equal to uipanel width. Uipanel no longer set to invisible.

Fixed bug: in subsub-menu

Figure Resize Detection.

MATLAB Release Compatibility
Created with R2010b
Compatible with any release
Platform Compatibility
Windows macOS Linux