File Exchange

image thumbnail


version 1.8 (13.2 KB) by

Create Menu Bar (s) on any location in a figure window



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

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.

Jiro Doke

Jiro Doke (view profile)

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
MATLAB 7.11 (R2010b)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video